我正在读取文件,然后使用readlines()保存该信息。然后我检查一下我的一个列表中的任何数据是否在readlines中。我面临的问题是从我的列表中没有的readlines中删除所有信息,因此readlines只包含我列表中的信息,即是否有任何匹配。当我说匹配时,我的意思是,如果以任何顺序找到任何单词。有人可以帮我指点正确的方向吗?谢谢。我正在使用python 2.7并正在阅读utf-8文件。
编辑:我正在读取文件并将其信息存储到readlines(),然后我使用我的列表检查文件是否包含我要查找的内容。如果是,那么我想从readlines()中删除所有数据,除了从我的列表中找到的匹配。我将匹配保存到文本文件中。我希望这是有道理的。如果我以正确的方式解决这个问题,请告诉我。
Edit2:我正在读取一个文件,然后使用readlines,它将该文件中的数据存储在我的readlines()变量中。我知道分享我的代码会很有帮助,但我不允许这样做。
编辑3:伪代码
alist= ['hamburger','cow','meat']
openit = open.codecs('afile.html','utf-8-sig')
justreadit = openit.readlines()
for alist in justreadit:
print "found matches"
评论:删除任何非列表的数据。当我尝试将英镑符号作为正常评论时,它不起作用 edit4:我在alist中查找文件中的任何单词。没有订单,我只需找到该单词并将其保存到文本文件中。
答案 0 :(得分:2)
那么让我看看我是否理解这一点。
你有一个看起来像这样的文件:
I am a farmer
Sometimes, I farm chickens
I also have a cow
I like to eat hamburger meat
But not lamb
你想要抓住第三和第四行,因为第三行有"cow"
,第四行有"hamburger"
和"meat"
。如果这是对您的问题的正确理解,这里将是实现该问题的代码(假设上述文本保存到当前工作目录中的afile.html
)。
word_list = ['hamburger', 'cow', 'meat']
with open('afile.html', encoding='utf-8-sig') as f:
lines = f.readlines()
for line in lines:
for word in word_list:
if word in line:
print(line)
break
结果:
I also have a cow
I like to eat hamburger meat
这是你想要的结果吗?
请注意,有很多方法可能会失败。例如,不会打印行I LIKE COW
,因为"COW"
与"cow"
的情况不同。将打印行"I like cows"
,因为在该行中找到了子串"cow"
(即使 word “cow”不是)。由于你的问题中的规范不清楚这些事情,我没有试图猜测你做了什么或不想要的行为。
答案 1 :(得分:0)
我对此很新,但我认为,因为file.readlines()返回一个列表,每个列表条目都是目标文件中的一行。为了只返回比赛,我会:
justreadit=openit.readlines()
matchlist=[]
for i in justreadit:
for h in alist:
if h==i:
outputlist.append(i)
return outputlist