我开始学习Python,我决定编写一个简单的刮刀。我遇到的一个问题是我无法将NavigableString转换为常规字符串。
使用BeautifulSoup4和Python 3.5.1。我应该咬紧牙关,去看早期版本的Python和BeautifulSoup吗?还是有办法 我可以编写自己的函数来将NavigableString转换为常规的unicode字符串吗?
for tag in soup.find_all("span"):
for child in tag.children:
if "name" in tag.string: #triggers error, can't compare string to NavigableString/bytes
return child
#things i've tried:
#if "name" in str(tag.string)
#if "name" in unicode(tag.string) #not in 3.5?
#if "name" in strring(tag.string, "utf-8")
#tried regex, didn't work. Again, doesn't like NavigableSTring type.
#... bunch of other stuff too!
答案 0 :(得分:5)
我试图解码我应该编码的时间:
str(child.encode('utf-8'))
答案 1 :(得分:2)
对于Python 3,答案仅仅是
str(tag.string)
其他答案将失败。
unicode()
不是Python 3内置的。
tag.string.encode('utf-8')
会将字符串转换为您不需要的字节字符串。
答案 2 :(得分:1)
你可以这样做:
unicode(tag.string)
答案 3 :(得分:0)
我想到了这个问题,How to remove this \xa0 from a string in python?的马克·拉姆森(Mark Ramson)的答案很好地解决了问题
import unidecode
word = unidecode.unidecode(tag.string)