如何从文本文件中打印特定字符串?

时间:2017-08-06 22:00:13

标签: python string find range concatenation

file_contents = x.read() 
#print (file_contents)
for line in file_contents:
     if "ase" in line:
         print (line)

我正在查找文件中包含短语“ase”的所有句子。当我运行它时,什么都没有打印出来。

2 个答案:

答案 0 :(得分:1)

由于file_contentsx.read()的结果,因此字符串不是字符串列表。 所以你要对每个角色进行迭代。

改为:

file_contents = x.readlines()

现在你可以搜索你的行了

或者如果您不打算重复使用file_contents,请使用以下命令迭代文件句柄:

for line in x:

所以你不必readlines()并将所有文件存储在内存中(如果它很大,它会有所作为)

答案 1 :(得分:1)

read将返回文件的整个内容(不是逐行)作为字符串。所以当你迭代它时,你会迭代单个字符:

file_contents = """There is a ase."""
for char in file_contents:
    print(char)

您可以简单地遍历文件对象(逐行返回):

for line in x:
    if "ase" in line:
        print(line)

请注意,如果您实际查找的是句子而不是包含'ase'的行,则会更复杂一些。例如,您可以read完整文件并在.分割:

for sentence in x.read().split('.'):
    if "ase" in sentence:
        print(sentence)

但如果.代表句子的结尾(如缩写),则会失败。