如何打印包含特定关键字的csv文件行

时间:2019-06-12 17:11:27

标签: python csv

我正在尝试打开两个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 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

而不是打印出匹配的行。

我应该怎么做才能使它起作用?

1 个答案:

答案 0 :(得分:0)

代替

text = f.read()

text = f.readlines()

这里的问题是,您将其作为包含换行符的大长字符串阅读-而您希望将其阅读为行列表。本质上,f.readlines()f.read().split('\n')大致等效(不完全相同,但对于此特定比较而言足够相似)。因此,为什么要看到输出呢?-您要迭代每个字符,而不是每行

更改text,使其最终以字符串列表而不是一个字符串的形式解决您的问题。


还有一些次要术语。您说mydict = {rows[0] for rows in reader}dict。不是-是setdict是专门用于键值对的,而set只是键。它们都被实现为哈希表。