簡體   English   中英

如何從python中的Dictionary數據中刪除unicode字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM