gix*_*xer 6 python regex string json
JSON对象将打印到我的syslog文件中.我需要从日志中提取字符串并将其转换为JSON.我在' {'和' }' 之间提取字符串没有任何问题,但某些字符串中有一个转义字符,这导致json.loads失败
这是问题所在:
>>> import json
>>> resp = '{"from_hostname": {"value": "mysite.edu\"", "value2": 0, "value3": 1}}'
>>> json.loads(resp)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 381, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 1 column 41 (char 40)
>>> resp[40]
'"'
>>> resp[41]
','
>>> resp[39]
'"'
>>>
Run Code Online (Sandbox Code Playgroud)
当json看到\"我猜它只看到"并假设字符串结束,并且它抛出分隔符错误.
我尝试替换\",\\"但似乎没有用.
注意:\"可以发生在字符串的开头或结尾或中间.
我该如何工作?
小智 5
如果\"你的字符串中可以出现你必须逃避\和"使用
import json
resp = '{"from_hostname": {"value": "mysite.edu\\\"", "value2": 0, "value3": 1}}'
print(json.loads(resp))
Run Code Online (Sandbox Code Playgroud)
它打印
{u'from_hostname': {u'value3': 1, u'value2': 0, u'value': u'mysite.edu"'}}
Run Code Online (Sandbox Code Playgroud)
这是你的问题的正确插入吗?
| 归档时间: |
|
| 查看次数: |
6596 次 |
| 最近记录: |