我有疑问。
st = "b%C3%BCrokommunikation"
urllib2.unquote(st)
输出:'b \ xc3 \ xbcrokommunikation' 但是,如果我打印它:
print urllib2.unquote(st)
输出:bürokommunikation
为什么会有区别? 我必须将bürokommunikation而不是'b \ xc3 \ xbcrokommunikation'写入文件。
我的问题是: 我有很多数据,这些数据是从URL中提取的。我必须将它们存储为例如。 bürokommunikation到文本文件。
答案 0 :(得分:2)
您正在查看相同的结果。当您尝试在没有打印命令的情况下打印它时,它只显示__repr__()
结果。当您使用print时,它会显示unicode字符,而不是使用\ x
答案 1 :(得分:2)
当您print
字符串时,您的终端仿真程序会识别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)