Python文本清理

0 投票
1 回答
948 浏览
提问于 2025-04-18 14:08

我写了一段代码,目的是提取文本,然后用关键词来搜索句子。现在我得到了下面的输出:

['& ldquo ; 这是被许多市场观察者引用的地方,云计算的真正价值在于它正在不断提升。', '& ldquo ; 我们并没有放弃我们的系统空间,但我认为我们对哪些部分适合增长变得更加具体,每个IBM内部的元素都需要证明它的位置,随着我们向前推进 & ndash ; 我认为这就是联想公告背后的背景。& rdquo ; 这与罗梅蒂在她的年度信中写的内容非常契合,她告诉股东今年最大的挑战将是 & ldquo ; 将IBM硬件业务转变为新的现实和机会。& rdquo]

我不知道这些rsquo和ldquo是什么,它们让文本变得很乱。下面是我的代码:

br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent','Chrome')]
html = br.open(url).read()
titles = br.title()
readable_article= Document(html).summary()
readable_title = Document(html).short_title()
soup = bs4.BeautifulSoup(readable_article)
Final_Article = soup.text
final.append(titles)
final.append(url)
final.append(Final_Article)
raw = nltk.clean_html(html)
tokens = nltk.wordpunct_tokenize(raw)
lmtzr = WordNetLemmatizer()
t = [lmtzr.lemmatize(t) for t in tokens]
text = nltk.Text(t)
word = words(n)
find = ' '.join(str(e) for e in word)
search_words = set(find.split(' '))
sents = ' '.join([s.lower() for s in text])
blob = TextBlob(sents.decode('ascii','ignore'))
matches = [map(str, blob.sentences[i-1:i+2])     # from prev to after next
for i, s in enumerate(blob.sentences) # i is index, e is element
    if search_words & set(s.words)]
        print matches,word

1 个回答

3

代码 ”“ 是用来表示开引号和闭引号的。rsquolsquo 是单引号(在这个文本中用作撇号),而 是一个短横线。如果你的源文本中出现了这些符号,可以用下面的代码来替换它们。

import re
cleaned = re.sub(r'& ?(ld|rd)quo ?[;\]]', '\"', raw)
cleaned = re.sub(r'& ?(ls|rs)quo ?;', '\'', cleaned)
cleaned = re.sub(r'& ?ndash ?;', '-', cleaned)

这段代码会把你原始文本中所有的这些符号(无论有没有空格)替换成引号,并把结果保存到一个叫 cleaned 的新变量里。接下来把 cleaned 传递给你代码的其他部分就可以正常工作了。

撰写回答