在文件中搜索单词作为条件

时间:2018-05-16 19:21:38

标签: python

基本上我想打印一个否定陈述,如果一个单词不在文件中。

import fileinput
import sys

def find(text, file):
    fisier = open(file, "r",  encoding='UTF-8')
    upper = text[0].upper()
    lower = text[0].lower()
    uppertext = upper + text[1:]
    lowertext = lower + text[1:]
    #print(lowertext)
    #print(uppertext)
    for line in fisier.readlines():
        if (uppertext  in line.strip()):
            print(line)
        if (lowertext  in line.strip()):
            print(line)
    if (text not in fisier):
        print(uppertext,"wasn't found in" , file)


def main():
    find("obuz", "catastrofa.txt")
main()

这些都不奏效。尽管文件中有单词,但它仍打印出“文件未在文件中找到”。

le:更多代码。 fileinput用于其他东西

2 个答案:

答案 0 :(得分:0)

in file file是来自例如{1}的文件描述符。 open()会为您提供文件中所有的列表。除非text用于匹配整行,包括末尾的换行符和任何前导/尾随空格,否则这不是您想要的。如果text是一个简单的字符串,而不是正则表达式,那么这可能就是你想要的:

found=False
for line in file:
    if text in line:
        found=True
if not found:
    print("{} wasn't found in {}".format(text, filename))

答案 1 :(得分:0)

检查字符串中存在的惯用方法是使用needle in haystack语法:

def find_in_file(needle, filepath):
    with open(filepath, 'r') as fh:
        # Case-insensitive search
        if needle.lower() not in fh.read().lower():
            print("%s wasn't found in %s" % (needle.upper(), filepath))

关于进行不区分大小写的搜索的注意事项:这是ASCII字符串的情况。 See this answer and comments for discussion on handling Unicode comparison with Python