Python 解码/编码链接
如何获得Python 解码/编码链接,python,string,list,python-2.7,Python,String,List,Python 2.7,如何获得预期的结果以返回可读字符串?换句话说,当给定/wiki/Cookbook:Cao_l%E1%BA%A7u时,它应该返回/wiki/Cookbook:Cao_lầu 注意:我正在运行Python 2.7.2 import urllib test_array = [ '/wiki/Cookbook:Bulgarian_Meatball_Soup_(Supa_Topcheta)', '/wiki/Cookbook:Campfire_S%27mores', '/wiki
预期的结果
以返回可读字符串?换句话说,当给定/wiki/Cookbook:Cao_l%E1%BA%A7u
时,它应该返回/wiki/Cookbook:Cao_lầu
注意:我正在运行Python 2.7.2
import urllib
test_array = [
'/wiki/Cookbook:Bulgarian_Meatball_Soup_(Supa_Topcheta)',
'/wiki/Cookbook:Campfire_S%27mores',
'/wiki/Cookbook:Candied_Almonds_(Br%C3%A4nda_mandlar)',
'/wiki/Cookbook:Chicken_%26_Pasta_Alfredo',
'/wiki/Cookbook:Cozido_%C3%A0_Portuguesa'
]
actual = [urllib.unquote(i).decode('utf-8') for i in test_array]
assert '/wiki/Cookbook:Bulgarian_Meatball_Soup_(Supa_Topcheta)' == actual[0]
assert "/wiki/Cookbook:Campfire_S'mores" == expected[1]
assert '/wiki/Cookbook:Candied_Almonds_(Brända_mandlar)' == actual[2]
assert '/wiki/Cookbook:Chicken_&_Pasta_Alfredo' == actual[3]
assert '/wiki/Cookbook:Cozido_à_Portuguesa' == actual[4]
您需要指定unicode文本(前缀
u
)而不是字符串文本,因为返回的是unicode
对象
assert u'/wiki/Cookbook:Bulgarian_Meatball_Soup_(Supa_Topcheta)' == expected[0]
assert u"/wiki/Cookbook:Campfire_S'mores" == expected[1]
assert u'/wiki/Cookbook:Candied_Almonds_(Brända_mandlar)' == expected[2]
assert u'/wiki/Cookbook:Chicken_&_Pasta_Alfredo' == expected[3]
assert u'/wiki/Cookbook:Cozido_à_Portuguesa' == expected[4]
顺便说一句,我会给
expected
一个不同的名字,比如actual
或got
。(字符串文字是预期的结果,对吗?我需要数组精确地包含那些精确的字符串。基本上,如果要循环通过预期的并打印每个元素,您将看到字符串表示。我需要它们作为字符串,这样我就可以通过“:”来拆分它们,从而只提取配方名称。这就是我在预期中需要的结果。希望这是有意义的。@TheGrayFox,如果您想要字符串(通过TestRing),请删除.decode('utf-8')
expected[3]
返回/wiki/Cookbook:Candied_Almonds_(Br\xc3\xa4nda_mandlar)
哪一个不是/wiki/Cookbook:Candied_Almonds_(Brända_mandlar)
@TheGrayFox,这就是python表示不可打印字符(ASCII)的方式。试着打印它们(不是整个列表,而是每个项目):@TheGrayFox,顺便说一句,如果jq
正确设置,则不需要精确地打印<代码>…\uxxx…
应该可以工作。