[英]How to remove unicode characters from Dictionary data in python
使用請求庫后,我在response.json()中得到了dict
{u'xyz': {u'key1': None, u'key2': u'Value2'}}
我想刪除所有unicode字符並僅打印鍵值對而不使用unicode字符
我嘗試過以下方法刪除,但它顯示格式錯誤的字符串
>>> import json, ast
>>> c = {u'xyz': {u'key1': None,u'key2': u'Value2'}}
>>> ast.literal_eval(json.dumps(c))
獲取'ValueError:格式錯誤的字符串'
關於如何做的任何建議?
將您的無更改為'無':
c = {u'xyz': {u'key1': 'None', u'key2': u'Value2'}}
這是一個鑄造問題 - 就像str一樣
此外,也許你想要將所有None更改為空str或'None'str ...請參閱此主題: Python:將無轉換為空字符串的最慣用方式? 使用此代碼,我將空字符串更改為“無”:
def xstr(s):
if s is None:
return 'None'
return str(s)
此代碼段將幫助您保留數據,而不使用unicode前綴表示法u
:
>>> import json
>>> c = {u'xyz': {u'key1': u'Value1',u'key2': u'Value2'}}
>>> print c
{u'xyz': {u'key2': u'Value2', u'key1': u'Value1'}}
>>> d = eval(json.dumps(c))
>>> print d
{'xyz': {'key2': 'Value2', 'key1': 'Value1'}}
json.dumps()會將dict轉換為字符串類型,而eval()會將其反轉。
注意:為了測試目的,key1值已從None更改為'value1'
你可以使用unicodestring.encode("ascii","replace")
>>> ustr=u'apple'
>>> ustr
u'apple'
>>> astr=ustr.encode("ascii","replace")
>>> astr
'apple'
我真的不明白你為什么要這樣。 你的變量是一個普通的Python字典,帶有普通的Unicode字符串,它們碰巧被打印為u''
以區別於字節串,但這對於使用它們無關緊要。
如果你想將它們保存為字符串以便以后將它們作為數據讀取,那么JSON就是一種很好的格式。 因此,根本不需要調用request的.json()
函數,只需使用response的.text
屬性 - 畢竟它已經是JSON了。
你的嘗試
>>> ast.literal_eval(json.dumps(c))
失敗是因為您首先將c
再次轉換為JSON,然后嘗試將其解析為Python文字。 這不起作用,因為Python不是JSON; 特別是一個有null
而另一個有None
。
那么也許你想將Unicode字符串更改為字節串? 就像通過將它們編碼為UTF8一樣,這可能有效:
def to_utf8(d):
if type(d) is dict:
result = {}
for key, value in d.items():
result[to_utf8(key)] = to_utf8(value)
elif type(d) is unicode:
return d.encode('utf8')
else:
return d
或類似的東西,但我不知道你為什么需要它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.