我从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"))
答案 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