当前位置: 首页 > 知识库问答 >
问题:

Python-将2个文件与CSV模块和3列进行比较

幸弘扬
2023-03-14

我正在尝试将2个文件与Python CSV模块进行比较。

第一个CSV文件如下所示:

Name N, Age, Pound
A, 1, 10
A, 2, 10
B, 2, 12

第二个CSV文件:

Name N, Age, Pound
A, 1, 10
A, 3, 8
C, 1, 7

如果列名和列龄相等,则在输出中返回两个文件的磅数。

输出文件示例:

Name, Age, Pound1, Pound2
A, 1, 10, 10
import csv
import io

alist, blist = [], []

with open("hosts.csv", "r") as fileA:
    reader = csv.reader(fileA, delimiter=',')
    for row in reader:
        alist.append(row)
with open("masterlist.csv", "r") as fileB:
    reader = csv.reader(fileB, delimiter=',')
    for row in reader:
        blist.append(row)

first_set = set(map(tuple, alist))
secnd_set = set(map(tuple, blist))

matches = set(first_set).intersection(secnd_set)
print (matches)

多谢了。

共有1个答案

利俊迈
2023-03-14

您可以尝试以下操作:

import csv
file1 = list(csv.reader(open('first.csv')))
file2 = list(csv.reader(open('second.csv')))
new_columns = [[a[0], a[1], a[-1], b[-1]] for a, b in zip(file1[1:], file2[1:]) if a[:2] == b[:2]]
write = csv.writer(open('outputfile.csv'))
write.writerow(new_columns)
 类似资料:
  • 我正在制作一个输血游戏。我有2个数组列表。一个有献血者的血型和姓名,第二个有接受者的血型和姓名。所有的名字我都会得到用户的输入并将它们存储在一个数组中(接受者数组列表更大)。 我不知道如何使用布尔2D数组将两个数组列表进行比较(应该返回true或false)。例如,在所有捐赠者和接受者输入姓名和血型后,程序应该告诉他们是否匹配。 我知道下面的代码是错误的,但我不知道怎么做。

  • 问题内容: 我正在尝试解析一个csv文件,并仅从特定列中提取数据。 范例csv: 我想只捕获特定的列,说,,和。 我看过的代码使我相信我可以通过其对应的编号来调用特定的列,即:将对应于2并遍历每一行使用会产生列2中的所有项目。只有它不能。 到目前为止,这是我所做的: 并且我希望这只会打印出我想要的每一行的特定列,除非不是,我只会得到最后一列。 问题答案: 你会得到从这个代码的最后一列的唯一方法是,

  • 问题内容: 我正在使用Python csv模块读取csv文件,每一行都像这样: 然后,我将row [0]转换为Unix时间,但是我想用刚为csv文件的每一行找到的Unix时间替换datetime 因此,我使用unixtime值创建了列表Y,但是接下来我该如何进行替换,以产生如下所示的输出: 问题答案: 每个只是一个。您可以就地对其进行修改,也可以使用要替换的值创建一个新列表: 如果要将其写回文件,

  • 我有一个长长的列表,列表的形式如下--- i、 列表中的值有不同的类型——float、int、string。如何将其写入csv文件,使输出的csv文件看起来像

  • 主要内容:CSV文件写入,CSV文件读取CSV 文件又称为逗号分隔值文件,是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。CSV 是电子表格和数据库中最常见的输入、输出文件格式,可参考《 CSV介绍》。 通过爬虫将数据抓取的下来,然后把数据保存在文件,或者数据库中,这个过程称为数据的持久化存储。本节介绍 Python 内置模块 CSV 的读写操作。 CSV文件写入 1) csv.writer() csv 模块中的

  • 我有两个大约150 MB的大txt文件。我想从file1的每一行读取一些数据,并扫描file2的所有行,直到找到匹配的数据。如果没有找到匹配的数据,我希望将该行输出到另一个文件中。 选项2:使用上面提到的三个读取器对文件1中的每个记录读取文件2 n次。每次读取后,我必须关闭文件并再次读取。我在想最好的办法是什么。我还有别的选择吗