为什么赢了';Python是否正确显示此文本?(UTF-8解码问题) 将urllib.request导入为u zipcode=str(47401) url='1〕http://watchdog.net/us/?zip='+zipcode con=u.urlopen(url) page=str(con.read()) value3=int(第页查找(“”)+7 value4=int(第页查找(“”)-15 district=str(第[value3:value4]页) 印刷品(地区) newdistrict=district.replace(“\xe2\x80\x99”,“”) 印刷品(新界区)

为什么赢了';Python是否正确显示此文本?(UTF-8解码问题) 将urllib.request导入为u zipcode=str(47401) url='1〕http://watchdog.net/us/?zip='+zipcode con=u.urlopen(url) page=str(con.read()) value3=int(第页查找(“”)+7 value4=int(第页查找(“”)-15 district=str(第[value3:value4]页) 印刷品(地区) newdistrict=district.replace(“\xe2\x80\x99”,“”) 印刷品(新界区),python,html,utf-8,python-3.x,Python,Html,Utf 8,Python 3.x,出于某种原因,我的代码以以下格式插入标题:in-09:Indiana\xe2\x80\x99s 9th。我知道\xe字符串对于'符号是unicode,但我不知道如何让python用'符号替换这组字符。我尝试过解码字符串,但它已经是unicode的,上面的替换代码没有改变任何东西。关于我做错了什么有什么建议吗?试试这个 import urllib.request as u zipcode = str(47401) url = 'http://watchdog.net/us/?zip=' + zi

出于某种原因,我的代码以以下格式插入标题:
in-09:Indiana\xe2\x80\x99s 9th
。我知道
\xe
字符串对于
'
符号是unicode,但我不知道如何让python用
'
符号替换这组字符。我尝试过解码字符串,但它已经是unicode的,上面的替换代码没有改变任何东西。关于我做错了什么有什么建议吗?

试试这个

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)
我认为您正在使用utf-8,所以它应该是这样的

newdistrict = district.encode("**THE_INPUT_STRING_ENCODING**").replace("\\xe2\\x80\\x99","'")
但这不是使用unicode的正确原因。 一旦您的文本被导入到程序中,您应该在所有地方使用unicode 除了当输出为输出时,应该考虑外部目的地

因此,更好的方法是在脚本顶部添加行

newdistrict = district.encode("utf-8").replace("\\xe2\\x80\\x99","'")
将您的输入读取为utf-8

# -*- coding: utf-8 -*-
然后呢 newdistrict=district.replace(u“您的UNICODE\u字符串”,“'))

比如说

page = con.read().decode('utf-8')
要获得更多帮助,请阅读此


当调用
con.text()
时,将返回一个
字节
对象。对其调用
str()
将返回表示它的字符串-因此,如果不指定编码,将使用转义符而不是实际字符。(这意味着您的字符串最终包含
\\xe2\\x80\\x99
以及各种其他不需要的内容。)
字节
与Python 2中的
str
非常相似:它没有存储任何编码信息str与Python 2中的
unicode
类似;它有编码。因此,当将
bytes
对象转换为
str
对象时,您需要告诉它实际使用的是什么编码。在本例中,这是
utf-8

与其对其调用
str()
,不如使用
字节;这是一样的,只是更整洁

newdistrict = district.replace(u"דכעדחלגעדיל","'")
>>将urllib.request作为u导入
>>>zipcode=47401
>>>url='1〕http://watchdog.net/us/?zip={}格式(zipcode)
>>>con=u.urlopen(url)
>>>page=con.read().decode('utf-8')
>>>第[page.find(“”+7:page.find(“”-15]
“IN-09:印第安纳州第九”

这里所做的唯一功能更改是将
字节
对象解码为
'utf-8'

的规范。您是否尝试过使用
unicode
文字?我不完全确定您的意思,您能提供更多信息吗?它不是
',
,而是
'
(U+2019,右单引号)。鉴于您使用的是
urllib.request
,我猜您使用的是Python 3.Yup,使用的是Python 3,它指定的值是-1,这意味着它在district变量中找不到该字符串,即使它在调用print函数时在屏幕上打印该字符串。感谢您的帮助,我最初尝试使用类似于:page=con.read()newpage=page.decode('utf-8')的方法对文件进行解码它在以前的作业中工作过,但在这里给了我一个空白页。然后我发现,通过删除解码行,我可以让它返回源代码,所以我才开始工作。不确定发生了什么,再次感谢您的帮助。:)基本上,
str(b'\xab')
产生
“b'\\xab''
而不是
'\xab'
(它相当于'repr(b'\xab'),因为没有指定编码就没有有意义的转换)。您的答案不正确,因为他正在处理的是Python 3。
>>> import urllib.request as u
>>> zipcode = 47401
>>> url = 'http://watchdog.net/us/?zip={}'.format(zipcode)
>>> con = u.urlopen(url)
>>> page = con.read().decode('utf-8')
>>> page[page.find("<title>") + 7:page.find("</title>") - 15]
'IN-09: Indiana’s 9th'