import urllib.request as u
zipcode = str(47401)
url = 'http://watchdog.net/us/?zip=' + zipcode
con = u.urlopen(url)
page = str(con.read())
value3 = int(page.find("<title>")) + 7
value4 = int(page.find("</title>")) - 15
district = str(page[value3:value4])
print(district)
newdistrict = district.replace("\xe2\x80\x99","'")
print(newdistrict)
出于某种原因,我的代码以以下格式拉入标题:IN-09: Indiana\xe2\x80\x99s 9th
。我知道\xe
字符串对于'
符号是unicode,但是我不知道如何让python用'
符号替换这组字符。我试过对字符串进行解码,但它已经是unicode格式,上面的替换代码没有任何改变。关于我做错什么有什么建议吗?
当您调用
con.text()
时,这将返回一个bytes
对象。对其调用str()
将返回其表示形式的字符串-因此,如果不指定编码,则使用转义符而不是实际字符。(这意味着您的字符串最终包含\\xe2\\x80\\x99
以及各种其他不需要的内容。)bytes
基本上类似于Python 2中的str
:它没有存储任何编码信息。str
在Python 3中类似于Python 2中的unicode
;它具有编码。所以,当把一个bytes
对象转换成一个str
对象时,你需要告诉它它实际上是用什么编码的。在这种情况下,就是utf-8
。与其在上面调用
str()
,不如使用bytes.decode
;这是一样的,只是更整洁。这里所做的唯一功能更改是将
bytes
对象解码为'utf-8'
的规范。试试这个
我想你用的是utf-8所以应该是这样的
但这不是使用unicode的正确原因。 一旦你的文本被导入到程序中,你就应该在所有地方使用unicode 除了当输出作为输出时应该考虑外部目的地
所以更好的办法是在脚本顶部加上一行
以utf-8形式读取输入
然后做 newdistrict=district.replace(u“您的UNICODE字符串”,“'”)
例如
要获得更多帮助,请阅读此
http://docs.python.org/howto/unicode.html
相关问题 更多 >
编程相关推荐