Python 嵌套 for 循环将文本文件中的字符串与 csv 文件中的字符串匹配

Python nested for loop to match strings from a text file to strings in a csv file

我的代码的目的是读取文本文件,将行添加到数组中,遍历数组中的每个元素,将元素转换为字符串,以及来自 csv 文件的 return 行包含这个字符串。我的代码是:

#Read cvs File from url
import csv
import urllib2   
url = 'mycsvfile.csv'
response = urllib2.urlopen(url)
cr = csv.reader(response)

#Read txt File
import linecache
fileName = 'myfile.txt'
myFile = open(fileName,'r')
list_of_lists = []
try:
    for line in myFile:
        list_of_lists.append(line.strip())

    #Lookup Lines
    for element in list_of_lists:
        elementstring=''.join(element)
        for row in cr:
            if elementstring in row:
                print row


finally:
    myFile.close()

代码不显示任何内容。

我的猜测是,在 csv reader 的第一次迭代中,您没有任何行满足条件 - if elementstring in row:(对于第一个 elementstring)。在这次迭代之后,你已经用完了你的 csv,它已经到了最后,试图再次迭代它是行不通的。

尝试在循环外打开 url 和 csv 并将每个内部行转换为一个集合,然后将它们全部添加到一个列表中,然后用它来循环 -

#Read cvs File from url
import csv
import urllib2   
url = 'mycsvfile.csv'
response = urllib2.urlopen(url)
cr = csv.reader(response)
csvset = [set(i) for i in cr]

#Read txt File
import linecache
fileName = 'myfile.txt'
myFile = open(fileName,'r')
list_of_lists = []
try:
    for line in myFile:
        list_of_lists.append(line.strip())

    #Lookup Lines
    for element in list_of_lists:
        elementstring=''.join(element)
        for row in csvset:
            if elementstring in row:
                print row


finally:
    myFile.close()