簡體   English   中英

如何解析包含dict的python b'字符串

[英]How to parse python b' string containing dict

當我從python3腳本查詢hgetallredis時,我得到了以下聲明的輸出。

data = {
    b'category': b'0',
    b'title': b'1',
    b'display': b'1,2',
    b'type': b'1',
    b'secret': b'this_is_a_salt_key',
    b'client': b'5'}

它是dict類型。

當我試圖得到“類別”時

>>> data['category']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'category'

讀完后我就這樣試了

import ast
>>> ast.literal_eval(data)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.4/ast.py", line 84, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib/python3.4/ast.py", line 83, in _convert
    raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: {b'category': b'0', b'title': b'1', b'display': b'1,2', b'type': b'1', b'secret': b'this_is_a_salt_key', b'client': b'5'}

也試過用json.dumps。 但無法理解真正的問題。

請幫我解析輸出並獲得所需的結果。

這不是JSON,因此嘗試解析它沒有意義。 它是一個字典,恰好有字節字符串的鍵。 所以你只需要使用字節字符串來訪問這些值:

data[b'category']

您必須在鍵值前面添加b ,因為它是一個字節字符串:

data[b'category']

如果要將字節字符串轉換為普通字符串,可以執行以下操作:

data = {b'category': b'0', b'title': b'1', b'display': b'1,2', b'type': b'1', b'secret': b'this_is_a_salt_key', b'client': b'5'}

newData = {str(key): str(value) for (key, value) in data.items()}

print newData
 data = {key.decode('utf-8'): value.decode('utf-8') for (key, value) in c.items()}
 >>> data
 {'category': '0', 'title': '1', 'display': '1,2', 'type': '1', 'secret': 'this_is_a_salt_key', 'client': '5'}
>>> data['display']
'1,2'
>>> data['display'].split(",")
['1', '2']

這是我想要的輸出..感謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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