替换字符串中的子字符串

时间:2013-07-24 04:05:31

标签: python string python-2.7 replace stop-words

我遇到了Python程序的问题。我正在尝试从html文件中读取内容,删除html标记然后删除停用词。

实际上,我可以删除标签,但我无法删除停用词。程序从文本文件中获取它们并将它们存储在列表中。该文件的格式如下:

a
about
an
...
yours

如果我在Python解释器中逐步测试我的代码,它可以工作,但是当我执行'python main.py'时它不起作用

我的代码是:

from HTMLParser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def get_data(self):
        return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

def remove_stop_words(textContent, stopWords):
    for stopWord in stopWords:
        word = stopWord.replace('\n','') + ' '
        textContent.replace(word, '')
    return textContent


def main():
    stopWords = open("stopWords.txt", "r").readlines()
    emailContent = open("mail.html", "r").read()
    textContent = strip_tags(emailContent)
    print remove_stop_words(textContent.lower(), stopWords)

main()

我希望你能帮助我

1 个答案:

答案 0 :(得分:4)

这里的问题是您没有保存textContent.replace(word, '')的结果。 replace函数不会修改textContent变量;而是返回结果。

因此,您需要将结果保存回textContent。所以

textContent.replace(word, '')

应该是:

textContent = textContent.replace(word, '')