我檢索歌曲ids
一長串從API
的,我就是其中追加到列表中遇到問題:編碼字符
track_ids = [spotify:id:1,spotify:id:2 ...]
latetr上,曲值被傳遞給函數,爲了得到相應的歌曲名稱,以這種方式:
(...)
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"))
什麼代碼實際上觸發了錯誤?通常情況下,當你試圖用只有字符串的unicode對象做某些事情時,會發生這種問題,所以它會嘗試使用「安全」編碼將它們編碼爲「str」(一種絕對可以由您的計算機表示的編碼) ;不幸的是,這意味着僅僅使用ASCII,顯式編碼有時可以工作,或者使用不需要轉換爲'str'的Unicode友好庫(或者使用Py3,Unicode總體上更友好) – ShadowRanger
'results' is list或字符串?如果它是一個列表,你應該編碼單個元素,如果它是一個字符串,你可以將它轉換爲列表,然後解碼元素 –
@EmL這是一個列表,我該怎麼做? –