[英]Convert every dictionary value to utf-8 (dictionary comprehension?)
我有一本字典,我想將每個值都轉換為utf-8。 這可行,但是有“更pythonic”的方式嗎?
for key in row.keys():
row[key] = unicode(row[key]).encode("utf-8")
對於列表我可以做
[unicode(s).encode("utf-8") for s in row]
但我不確定如何對字典做同樣的事情。
這與Python字典理解不同,因為我不是從頭開始創建字典,而是從現有字典創建。 鏈接問題的解決方案沒有向我展示如何遍歷現有字典中的鍵/值對,以便將其修改為新字典的新k / v對。 下面的答案(已被接受)顯示了該方法的實現,並且與具有類似鏈接的相關問題的答案相比,對於具有類似於我的任務的某人,其閱讀/理解要清晰得多。
使用字典理解 。 看來您是從字典開始的,所以:
mydict = {k: unicode(v).encode("utf-8") for k,v in mydict.iteritems()}
詞典理解的示例在鏈接中該塊的末尾附近。
因為我也遇到了這個問題,所以我構建了一個非常簡單的函數,該函數允許將任何dict用utf-8解碼(當前答案的問題是它僅適用於簡單dict)。
如果它可以幫助任何人,那就太好了,這里的功能是:
def utfy_dict(dic):
if isinstance(dic,unicode):
return(dic.encode("utf-8"))
elif isinstance(dic,dict):
for key in dic:
dic[key] = utfy_dict(dic[key])
return(dic)
elif isinstance(dic,list):
new_l = []
for e in dic:
new_l.append(utfy_dict(e))
return(new_l)
else:
return(dic)
那個由That1Guy提供的答案的Python 3版本。
{k: str(v).encode("utf-8") for k,v in mydict.items()}
這取決於您為什么要隱式編碼為UTF-8。 如果是因為要寫入文件,則pythonic方法是將字符串保留為Unicode並在輸出中進行編碼:
with io.open("myfile.txt", "w", encoding="UTF-8") as my_file:
for (key, values) in row.items():
my_string = u"{key}: {value}".format(key=key, value=value)
my_file.write(my_string)
如果您要執行以下操作,則可以僅遍歷鍵:
{x:unicode(a[x]).encode("utf-8") for x in a.keys()}
以ascii字符轉換非ascii詞典值的最佳方法是
mydict = {k: unicode(v, errors='ignore').encode('ascii','ignore') for k,v in mydict.iteritems()}
轉換UTF-8字符中的非UTF-8字典值的最佳方法是
mydict = {k: unicode(v, errors='ignore').encode('utf-8','ignore') for k,v in mydict.iteritems()}
有關更多參考,請閱讀python unicode文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.