如何在Python中搜索特定单词的文本文件

时间:2014-12-03 10:36:28

标签: python list class

我想在文本文件中找到与存储在名为items的现有列表中的单词相匹配的单词,该列表是在上一个函数中创建的,我希望能够在下一个函数中使用该列表但是我我不确定如何做到这一点,我尝试使用类,但我无法正确。我无法弄清楚其余代码的问题是什么。我尝试在没有类和列表的情况下运行它,并将第8行中的列表'items []'替换为正在打开的文本文件中的单词,即使没有出现错误,它仍然没有做任何事情。当下面的代码运行时,它会输出:“请输入一个有效的文本文件名:”然后它就会停止。

class searchtext():
    textfile = input("Please entre a valid textfile name: ")
    items = []

    def __init__search(self):
        with open("textfile") as openfile:
            for line in openfile:
                for part in line.split():
                    if ("items[]=") in part:
                        print (part)
                    else:
                        print("not found") 

该列表是从另一个文本文件创建的,该文件包含上一个函数中的单词,如果有任何帮助,它可以正常工作:

def createlist():
    items = []
    with open('words.txt') as input:
        for line in input:
            items.extend(line.strip().split(','))
    return items

print(createlist())

3 个答案:

答案 0 :(得分:1)

您可以通过以下方式使用正则表达式:

    >>> import re
    >>> words=['car','red','woman','day','boston']
    >>> word_exp='|'.join(words)
    >>> re.findall(word_exp,'the red car driven by the woman',re.M)
    ['red', 'car', 'woman']

第二个命令创建一个由“|”分隔的可接受单词列表。要在文件上运行此操作,只需将“女性驾驶的红色汽车”中的字符串替换为open(your_file,'r').read()

答案 1 :(得分:0)

这可能有点清洁。我认为上课是一种矫枉过正的事。

def createlist():
    items = []
    with open('words.txt') as input:
        for line in input:
            items.extend(line.strip().split(','))
    return items

print(createlist())
# store the list
word_list = createlist()

with open('file.txt') as f:
    # split the file content to words (first to lines, then each line to it's words)
    for word in (sum([x.split() for x in f.read().split('\n')], [])):
        # check if each word is in the list
        if word in word_list:
            # do something with word
            print word + " is in the list"
        else:
            # word not in list
            print word + " is NOT in the list"

答案 2 :(得分:-2)

匹配https://docs.python.org/3/howto/regex.html

时,没有类似正则表达式的内容
items=['one','two','three','four','five'] #your items list created previously
import re
file=open('text.txt','r') #load your file
content=file.read() #save the read output so the reading always starts from begining
for i in items:
    lis=re.findall(i,content)
    if len(lis)==0:
        print('Not found')
    elif len(lis)==1:
        print('Found Once')
    elif len(lis)==2:
        print('Found Twice')
    else:
        print('Found',len(lis),'times')