Python - 循环读取csv文件

时间:2016-02-24 10:22:06

标签: python csv

我想阅读CSV个文件并连续获得第一个元素的相似单词。如果有,则比较此行中的其他元素。

F.e。 test_items.csv:

name, value1, value2
ball, 2.5, 2.3
table, 112.5, 3.5
pen, 8.1, 3.5, 4.7

pin_items.csv:

name, value1, value2
balls, 2.5, 2.3
table1, 112.5, 3.5
pens12, 8.1, 3.5, 4.7

代码:

with open('test_items.csv', 'r') as plik:
    tab = []
    for element in csv.reader(plik):
        tab.append(element)

with open('pin_items.csv', 'r') as plik1:
     tab1=[]
     for element1 in csv.reader(plik1):
         tab1.append(element1)                        

for row in tab:
    for row1 in test:
        z = get_close_matches(row[0], row1[0])
        print z

在这种情况下,获取空“[]”

的输出

但是当我使用它时:

with open('test_items.csv', 'r') as plik:
    tab = []
    for element in csv.reader(plik):
        tab.append(element)

with open('pin_items.csv', 'r') as plik1:
     tab1=[]
     for element1 in csv.reader(plik1):
         tab1.append(element1)                        

for i in [row[0] for row in tab]:
    z = get_close_matches(i,[row1[0] for row1 in tab1])
    print z

然后它正确匹配名称的主题,但我无法比较匹配行的主题值。

有什么建议吗?我正在使用Python 2.7.11,谢谢。

3 个答案:

答案 0 :(得分:0)

import csv

with open('test_items.csv', 'r') as plik, open('pin_items.csv', 'r') as plik1:
    r1 = csv.DictReader(plik)
    r2 = csv.DictReader(plik1)
    names1 = {}
    names2 = {}
    for line in r1:
        names1[line['name']] = line
    for line in r2:
        if line['name'] in names1.keys():
            l1 = names1['name']
            l2 = line
            # do whatever you want with them here

这假设名称字段在csv中是唯一的

答案 1 :(得分:0)

问题解决了。

我没有使用" []"对于get_close_matches的可能性。

F.e。 : get_close_matches(&#39; appel&#39;,[&#39; ape&#39;,&#39; apple&#39;,&#39;桃子&#39;,&#39;小狗&#39;])< / p>

感谢所有回复。

答案 2 :(得分:-1)

我认为这是你的要求吗?

[[ 0.44        0.3         6.5       ]
 [ 0.25555556  0.6         2.2       ]]