python从readlines()中删除与列表不匹配的信息

时间:2014-01-04 07:20:55

标签: python python-2.7

我正在读取文件,然后使用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中查找文件中的任何单词。没有订单,我只需找到该单词并将其保存到文本文件中。

2 个答案:

答案 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