文本清洁python

时间:2014-07-21 17:03:06

标签: python

我写了一个代码,我拉文本,然后使用关键字搜索句子。我得到以下输出:

  

['&安培; ldquo;它& rsquo;一些市场观察者已经引用了云的实际价值,而且它是& rsquo;向上移动堆栈。','& ldquo;我们& rsquo;不要放弃我们的系统空间,但我认为我们& rsquo;更具体地说明哪个位适合增长所处的哪个部分,并且ibm中的每个元素都需要证明它的位置我们前进和放大。 ndash;我认为这是联想宣布背后的背景。& “这与罗梅蒂在她的年度信中所写的内容大相径庭,告诉股东今年的重大挑战是& ldquo;将ibm硬件业务转变为新的现实和机遇。& rdquo]

我不知道这些rsquo是什么,“这是打破文本。以下是我的代码

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

答案 0 :(得分:3)

”“是打开和关闭引号的代码。 rsquo和lsquo are single quotes (used in this text as appostraphes) and ndash`是一个破折号。如果源文本中存在这些模式,请使用以下内容替换它们。

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

这将原始文本(我称之为raw)中的两个代码(带或不带空格)替换为引号,并将其保存到名为cleaned的新变量中。将cleaned传递给代码的其余部分应该可以正常工作。