遇到编码字符的问题

时间:2016-08-25 01:20:36

标签: python regex list utf-8

我从ids检索了很长的歌曲列表API,并且我将它们附加到列表中:

track_ids = [spotify:id:1,spotify:id:2 ...]

latetr on,歌曲值被传递给一个函数,以便以这种方式获得相应的歌曲名称:

(...)
for i, x in enumerate(values):
        if x > threshold:
            track_name = sp.track(track_ids[i])['name']
            xsongs.append(track_name)
            print product.upper(),'-', "{} = {}".format(track_name, x), filter_name

但是当我运行脚本时,歌曲名称输出列表将停止,显示以下错误:

print product.upper(),'-', "{} = {}".format(track_name, x), filter_name UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 7: ordinal not in range(128)

修改

以下一行修正了它:

xsongs.append(track_name.encode("utf-8"))

2 个答案:

答案 0 :(得分:0)

您可以对列表中的每个元素进行编码。如果您的文件系统编码为utf-8,则可以尝试:

results = [value.encode('utf-8') for value in results]
print(results)

答案 1 :(得分:0)

示例中的字符串已经解码,因为它们是Unicode字符串。您无法再次解码Unicode字符串,因此Python 2使用HtmlNode childNode = parentNode.SelectSingleNode("div/div/div"); 编解码器将其隐式编码回字节字符串,因此" Unicode 编码错误&#34 ;。您拥有的字符串是正确的,您只是看到非ASCII字符的转义码,这是打印列表时的默认值。改为打印单个字符串:

ascii

输出:

results = [u'Magic Carpet Ride', u'La Grange', u'Tausendmal ber\xfchrt',
           u'Funkelperlenaugen',u'Lied F\xfcr All Die Vergessenen']

for r in results:
    print r