gpt4 book ai didi

python - 即使使用 "fromEncoding=UTF-8"之后,BeautifulSoup 也无法识别 UTF-8 字符

转载 作者:行者123 更新时间:2023-11-30 23:35:13 28 4
gpt4 key购买 nike

我编写了一个简单的脚本,仅获取网页并将其内容提取到标记化列表中。但是,我遇到了一个问题,当我将 BeautifulSoup 对象转换为字符串时,“、”等的 UTF-8 字符不会转换。相反,它们仍保持 unicode 格式。

当我创建 BeautifulSoup 对象时,我将源定义为 UTF-8,我什至尝试单独运行 unicode 转换,但没有任何效果。有人知道为什么会发生这种情况吗?

from urllib2 import urlopen
from bs4 import BeautifulSoup
import nltk, re, pprint

url = "http://www.bloomberg.com/news/print/2013-07-05/softbank-s-21-6-billion-bid-for- sprint-approved-by-u-s-.html"
raw = urlopen(url).read()
soup = BeautifulSoup(raw, fromEncoding="UTF-8")
result = soup.find_all(id="story_content")
str_result = str(result)
notag = re.sub("<.*?>", " ", str_result)
output = nltk.word_tokenize(notag)
print(output)

最佳答案

您遇到问题的字符不是 " (U+0022) 和 ' (U+0027),它们是大引号 (U+201C) 和 (U+201D) 和 ' (U+2019)。首先将它们转换为直接版本,您应该获得您期望的结果:

raw = urlopen(url).read()
original = raw.decode('utf-8')
replacement = original.replace('\u201c', '"').replace('\u201d', '"').replace('\u2019', "'")
soup = BeautifulSoup(replacement) # Don't need fromEncoding if we're passing in Unicode

这应该使引号字符变成您期望的形式。

关于python - 即使使用 "fromEncoding=UTF-8"之后,BeautifulSoup 也无法识别 UTF-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504056/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com