[英]Having problems searching with strings from csv module in Python
我有一个csv文件partList.csv
其中包含要用于搜索更大范围的txt文件的字符串。 由于某些原因,当我使用直接字符串“ L 99 ”时,会得到结果。 当我从csv加载字符串L 99时 ,没有任何结果。
partList.csv
仅在第一列中包含带有部件号的单元格,其中一个是L-99 。 txt_files_sample\\5.txt
是一个文本文档,在某些时候包含字符串L 99
我的代码:
def GetPartList():
partList = []
f = open('partList.csv', 'rb')
try:
reader = csv.reader(f)
for row in reader:
part = row[0].replace('-',' ').strip()
partList.append(part)
finally:
f.close()
return partList
def FindFileNames(partList):
i = 0
files = []
for root, dirs, filenames in os.walk('txt_files_sample'):
for f in filenames:
document = open(os.path.join(root, f), 'rb')
for line in document:
if partList[i] in line:
#if 'L 99' in line:
files.append(f)
break
i = i + 1
return files
print FindFileNames(GetPartList())
上面的代码产生了:
>>> []
如果我if 'L 99' in line:
取消注释if 'L 99' in line:
并且if partList[i] in line:
我得到结果:
>>> ['5.txt']
因此,使用Martijn的输入,我发现问题在于如何遍历partList
。 重写FindFileNames()
工作:
def FindFileList(partList):
i = 0
files = []
for root, dirs, filenames in os.walk('txt_files'):
for f in filenames:
a = 0
document = open(os.path.join(root, f), 'rb')
for line in document:
if a is 1:
break
for partNo in partList:
if partNo in line:
files.append(f)
a = 1
document.close()
return files
使用更新的代码,我得到的结果是文件名的准确列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.