Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解码/编码链接_Python_String_List_Python 2.7 - Fatal编程技术网

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…
应该可以工作。