python - 如何在 Python 中删除列表的标点符号?
问题描述
我完全是 nltk 和 python 的新手。我的任务是从 url 中提取所有文本。在阅读 nltk 文档后,我尝试并能够从指定的 url 中提取文本。我主要关心的是如何从提取的列表中删除特殊字符(如 .,-,"",'',!,)。下面提到的代码不适用于<li>
</li>
html 网页标签内的文本。因此,始终将点.
附加到<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)
解决方案
我不确定我是否正确理解了你的问题,但如果你想检测标点符号,你可以做类似的事情。
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))
推荐阅读
- java - 如何包含依赖关系的 Javadoc 和源代码
- reactjs - 道具未在 NextJs 中渲染
- java - Main.java:12:错误:缺少返回语句 } ^
- spring-security - spring-security-saml2-service-provider 的“未提供 KeyInfo 生成器”
- ios - 我想我已经完成了必要的代码签名工作,但在 Ionic 中构建仍然失败
- python - 缩放 GeoJSON 以查找附近的纬度和经度点
- python - 支持命令 discord.py
- java - Netflix zuul:通过 HTTP CONNECT 调用为 squid 等出站代理服务器配置 TLS 传递
- python - 遍历页面的while循环中的StaleElementReferenceException
- amazon-web-services - 通过 CLI 自动发布 AWS Marketplace