我有個字符串如下:{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}"
當我使用Python shell 時 :
ddb='{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_yd_login\", \"category\":\"hdfs\", \"ruler\":\"HDFS_5aedbdf799494932\", \"count\":2, \"totalDelay\":-1, \"totalProcessDelay\":24115, \"time\":1430360048929}'
eval(ddb)
{'category': 'hdfs', 'count': 2, 'tag': 'urs_yd_login', 'totalDelay': -1, 'time': 1430360048929, 'totalProcessDelay': 24115, 'ruler': 'HDFS_5aedbdf799494932', 'hostname': 'datastream2', 'module': 'sink'}
此時能夠正常轉(zhuǎn)換成字典類型,但是在程序里邊這樣寫就會拋出異常:
腳本如下格式:
print format_data[1]
ddddd = r'%s' % format_data[1].strip('"')
print ddddd
log_detail = eval(ddddd)
輸出如下:
{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}"
{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}unexpected character after line continuation character (, line 1)
麻煩各位大俠,幫小弟指點指點。
5 回答

守著星空守著你
TA貢獻1799條經(jīng)驗 獲得超8個贊
腳本里你用了 ddddd = r'%s' % format_data[1].strip('"') 來賦值的有 r
shell里沒這樣干,所以腳本出錯了

LEATH
TA貢獻1936條經(jīng)驗 獲得超7個贊
- 關(guān)于為什么會有 斜杠: 這個數(shù)據(jù)是從 MQ讀出來的, 默認會加上轉(zhuǎn)義符
- 關(guān)于賦值r , 去掉了也是同樣地問題

陪伴而非守候
TA貢獻1757條經(jīng)驗 獲得超8個贊
import json
json_str = {\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}
my_dic = json.loads(json_str)
添加回答
舉報
0/150
提交
取消