2024-09-28 22:23:38 发布
网友
我写了一个小Python脚本来解析一个网站。 我从一个类似http://foo.com/h\u00e4ppo的链接中得到了一个\u00e4形式的“ä”字符,我需要http://foo.com/häppo。在
http://foo.com/h\u00e4ppo
\u00e4
http://foo.com/häppo
您的字符\u00e4已经正确。这实际上是ä。在
ä
有时,字符串的表示(repr)将以转义形式显示,就像反斜杠\将显示为转义的\\。这部分很好。在
repr
\
\\
实际的问题是你不能在URL中使用。只有一小部分的ASCII字符在url中有效(请参见Which characters make a URL invalid?)。在
所以,你必须转义你的部分网址。在
>>> urllib.parse.quote('ä') '%C3%A4' >>> urllib.parse.quote('\u00e4') # same thing '%C3%A4'
但是请注意不要转义整个URL,只转义其中实际要转义的字符串的部分。例如,这是错误的:
你要做的是:
>>> 'https://www.google.com/?q=' + urllib.parse.quote('\u00e4') 'https://www.google.com/?q=%C3%A4'
试试看会发生什么:https://www.google.com/?q=%C3%A4
不幸的是,这在很大程度上取决于您解析的站点的编码,以及您的本地IO编码。在
我不确定你是否能在解析后翻译它,以及它是否真的值得做。如果有机会再次解析它,可以尝试使用python的decode()函数,例如:
decode()
text.decode('utf8')
除此之外,检查上面使用的编码是否与本地环境中的编码相同。这在Windows环境中特别重要,因为它们使用cp1252作为标准编码。在
cp1252
在Mac和Linux中:export PYTHONIOENCODING=utf8 在Windows中:set PYTHONIOENCODING=utf8
export PYTHONIOENCODING=utf8
set PYTHONIOENCODING=utf8
虽然不多,但我希望能有所帮助。在
您的字符
\u00e4
已经正确。这实际上是ä
。在有时,字符串的表示(
repr
)将以转义形式显示,就像反斜杠\
将显示为转义的\\
。这部分很好。在实际问题
实际的问题是你不能在URL中使用。只有一小部分的ASCII字符在url中有效(请参见Which characters make a URL invalid?)。在
所以,你必须转义你的部分网址。在
但是请注意不要转义整个URL,只转义其中实际要转义的字符串的部分。例如,这是错误的:
^{pr2}$你要做的是:
试试看会发生什么:https://www.google.com/?q=%C3%A4
不幸的是,这在很大程度上取决于您解析的站点的编码,以及您的本地IO编码。在
我不确定你是否能在解析后翻译它,以及它是否真的值得做。如果有机会再次解析它,可以尝试使用python的
decode()
函数,例如:text.decode('utf8')
除此之外,检查上面使用的编码是否与本地环境中的编码相同。这在Windows环境中特别重要,因为它们使用
cp1252
作为标准编码。在在Mac和Linux中:
export PYTHONIOENCODING=utf8
在Windows中:set PYTHONIOENCODING=utf8
虽然不多,但我希望能有所帮助。在
相关问题 更多 >
编程相关推荐