[英]How to parse python b' string containing dict
當我從python3腳本查詢hgetall到redis時,我得到了以下聲明的輸出。
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.