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()
我的代码的目的是读取文本文件,将行添加到数组中,遍历数组中的每个元素,将元素转换为字符串,以及来自 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()