我正在尝试打开两个csv文件,一个包含数据(minidata.csv),一个包含关键字(minikeys.csv),然后在第一个中搜索第二个中的关键字,然后打印出这些行包含来自第二个关键字的第一个关键字。希望有道理。
我尝试将关键字文件(minikeys.csv)作为列表打开并从那里搜索,但是由于某种原因,我将其打开到字典中的方式最接近成功。
with open('minidata.csv', 'r') as f:
text = f.read()
csvFileArray = []
with open('minikeys.csv', 'r') as inf:
reader = csv.reader(inf)
mydict = {rows[0] for rows in reader}
for key in mydict:
for row in text:
if key in text:
print(row)
这将使它打印出minidata.csv文件中的每一行,而不是匹配的行,但它也会打印出每个字符与迷你键中的字符一样多的次数。这样会给我类似以下的输出:
aaaa 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
而不是打印出匹配的行。
我应该怎么做才能使它起作用?
答案 0 :(得分:0)
代替
text = f.read()
做
text = f.readlines()
这里的问题是,您将其作为包含换行符的大长字符串阅读-而您希望将其阅读为行列表。本质上,f.readlines()
与f.read().split('\n')
大致等效(不完全相同,但对于此特定比较而言足够相似)。因此,为什么要看到输出呢?-您要迭代每个字符,而不是每行。
更改text
,使其最终以字符串列表而不是一个字符串的形式解决您的问题。
还有一些次要术语。您说mydict = {rows[0] for rows in reader}
是dict
。不是-是set
。 dict
是专门用于键值对的,而set
只是键。它们都被实现为哈希表。