我有一个非常基本的 Python 脚本,主要是为了学习目的而编写的。
它会在当前文件夹中打开一个终端。但是,我无法让它在 URI 中包含重音字符的文件夹中工作(例如:/home/pablo/Vídeos
或/home/pablo/Área de Trabalho
),因为 Nautilus URI 似乎被编码为那些 %{number} 值。有没有办法将这些 URI 转换为规范化的 URI,而不必手动翻译每个可能的重音值?
答案1
你的问题不是很清楚,但看起来你正在寻找urllib。请注意,urllib 需要 8 位字符串,因此您需要进行一些复杂的解码/编码。欢迎使用 python2 有点奇怪的 unicode 支持,pythn3 要好得多。
# -*- coding: utf-8 -*-
import urllib
url=u'/home/javier/Área'
url2 = url.encode('utf-8') # urllib expects 8-bit string
url3 = urllib.quote_plus(url2)
print url3 # >> %2Fhome%2Fjavier%2F%C3%81rea
url4 = urllib.unquote(url3) # It will return a 8-bit string
print url4 # >> /home/javier/Área
print url4.decode('utf-8')
您可以使用urllib.quote 库与 *urllib.quote_plus* 不同,它不会引用空格、+(加号)和 /(斜线)。这两个函数都接受字符串作为第二个参数,它们会在输出字符串中保留该字符串中的任何字符(我的意思是它不会引用它)。请注意,第二个参数名称 safe 的默认值对于 quote 是 '/',对于 quote_plus 是 ''。如果您在第二个参数中不包含斜线,quote 会更改它。
urllib.quote_plus('a/a','/') # 'a/a'