python - URL 组件 % 和\x

标签 python urllib2 urllib

我有疑问。

st = "b%C3%BCrokommunikation"
urllib2.unquote(st)

输出:'b\xc3\xbcrokommunikation' 但是,如果我打印它:

print urllib2.unquote(st)

输出:bürokommunikation

为什么不同? 我必须将 bürokommunikation 而不是 'b\xc3\xbcrokommunikation' 写入文件。

我的问题是: 我有很多具有从 URL 中提取的值的数据。我必须将它们存储为例如。 bürokommunikation 到一个文本文件。

最佳答案

当您打印 字符串时,您的终端仿真器会识别 unicode 字符 \xc3\xbc 并正确显示它。

但是,正如@MarkDickinson 在评论中所说,ü 在 ASCII 中不存在,因此您需要告诉 Python 您要写入文件的字符串是 unicode 编码的,以及您要使用的编码格式,例如 UTF-8 .

使用 codecs 库非常容易:

import codecs

# First create a Python UTF-8 string
st = "b%C3%BCrokommunikation"
encoded_string = urllib2.unquote(st).decode('utf-8')

# Write it to file keeping the encoding
with codecs.open('my_file.txt', 'w', 'utf-8') as f:
    f.write(encoded_string)

关于python - URL 组件 % 和\x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34379432/

相关文章:

python - 使用Python urllib2网站表单登录

python - 如何从 astropy 中的 URL 打开 FITS 文件?

rest - 如何让客户端接受服务器的SSL证书

python - BeautifulSoup - urllib.error.HTTPError : HTTP Error 403: Forbidden

python - 循环 urllib 时“超出最大递归深度”

python - plotly_express scatter函数出现问题

python - 是什么导致了这个 Python 语法错误?

python - 将 JSON 数据转换为 pandas df - python

python - 为什么 Python 的 urllib2.urlopen() 会为成功的状态码引发 HTTPError?

python - 如何仅在python selenium中获取第一层子元素