【问题标题】:How to remove punctuations of a list in Python?如何在 Python 中删除列表的标点符号?
【发布时间】:2018-06-11 13:18:59
【问题描述】:

我完全是 nltk 和 python 的新手。我的任务是从 url 中提取所有文本。在阅读 nltk 文档后,我尝试并能够从指定的 url 中提取文本。我主要关心的是如何从提取的列表中删除特殊字符(如 .,-,"",'',!,)。下面提到的代码不适用于 html 网页的 <li> </li> 标记内的文本。因此,总是将点. 附加到<li> 标记内文本的最后一个单词。任何帮助都深表感谢。源码如下。

from bs4 import BeautifulSoup 
import urllib.request
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
response = urllib.request.urlopen('https://en.wikipedia.org/wiki/Electronics') 
f=open('corpus.txt','w+')
html = response.read() 
soup = BeautifulSoup(html,"html.parser") 
text = soup.get_text(strip=True)
tokens = [t for t in text.split()]
clean_tokens = tokens[:] 
sr = stopwords.words('english') 
for token in tokens: 
if token in sr: 
   clean_tokens.remove(token) 
   freq = nltk.FreqDist(clean_tokens) 
   for normalize,val in freq.items(): 
       lemmatizer=WordNetLemmatizer()
       corpus_refi=lemmatizer.lemmatize(str(normalize) + ':' + str(val), pos="a")
       corpus_refi=corpus_refi.lower()
       print(corpus_refi)  

【问题讨论】:

  • 您在这一行缺少' response = urllib.request.urlopen('https://wikipedia.org)
  • 现在已被编辑。感谢您的建议。

标签: python nlp html-lists punctuation


【解决方案1】:

我不确定我是否正确理解了您的问题,但如果您想检测标点符号,您可以执行类似的操作。

from string import punctuation
punc = set(punctuation)
# then inside your for loop, you can either skip if
if token not in punc:

如果标记包含多个字符,其中一个是标点符号。要删除它,您可以执行类似的操作

token = translate(token.maketrans('', '', string.punctuation)) 

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    相关资源
    最近更新 更多