我想在另一个文本文件中查找 list.txt(每行一个字符串)中列出的字符串,以防万一我发现它打印“string,one_sentence”以防找不到“string,another_sentence”。我正在使用以下代码,但它只在文件 list.txt 的字符串列表中找到最后一个字符串。无法理解可能是什么原因?
data = open('c:/tmp/textfile.TXT').read()
for x in open('c:/tmp/list.txt').readlines():
if x in data:
print(x,',one_sentence')
else:
print(x,',another_sentence')
最佳答案
当您使用 readlines()
读取文件时,生成的列表元素确实有尾随换行符。这些可能是您的匹配项少于预期的原因。
代替写作
for x in list:
写
for x in (s.strip() for s in list):
这会从 list
中的字符串中删除前导和尾随空格。因此,它会从字符串中删除尾随的换行符。
为了巩固你的程序,你可以这样做:
with open('c:/tmp/textfile.TXT') as f:
haystack = f.read()
if not haystack:
sys.exit("Could not read haystack data :-(")
with open('c:/tmp/list.txt') as f:
for needle in (line.strip() for line in f):
if needle in haystack:
print(needle, ',one_sentence')
else:
print(needle, ',another_sentence')
我不想做太大的改变。最重要的区别是我在这里通过 with
语句使用上下文管理器。它确保为您正确处理文件(主要是关闭)。此外,使用生成器表达式动态剥离“针”线。上述方法是逐行读取和处理针文件,而不是一次将整个文件加载到内存中。当然,这只对大文件有影响。
关于python - 从另一个文本文件中搜索一个文件中列出的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370342/