Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用yaml将json响应解析为dict_Python_Json_Yaml - Fatal编程技术网

Python 使用yaml将json响应解析为dict

Python 使用yaml将json响应解析为dict,python,json,yaml,Python,Json,Yaml,我正在尝试使用python的yaml模块将字符串解析到字典中。当值中有:时,我得到异常。这是我的示例代码 import yaml input = '''{"method":"Send", "buf":{"html":"<html><body><div style=\"color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12p

我正在尝试使用python的yaml模块将字符串解析到字典中。当值中有:时,我得到异常。这是我的示例代码

import yaml

input = '''{"method":"Send", "buf":{"html":"<html><body><div style=\"color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt\"><ul><li>Sample message</li><li>Parse it<br></li></ul></div></body></html>","text":"\t* Sample message\n\t* Parse it\n"}} '''
yaml.load(input)
我得到以下例外

Traceback (most recent call last):
  File "webmailparser.py", line 9, in ?
    yaml.load(input)
  File "/usr/lib/python2.4/site-packages/yaml/__init__.py", line 58, in load
    return loader.get_single_data()
  File "/usr/lib/python2.4/site-packages/yaml/constructor.py", line 42, in get_single_data
    node = self.get_single_node()
  File "/usr/lib/python2.4/site-packages/yaml/composer.py", line 35, in get_single_node
    if not self.check_event(StreamEndEvent):
  File "/usr/lib/python2.4/site-packages/yaml/parser.py", line 93, in check_event
    self.current_event = self.state()
  File "/usr/lib/python2.4/site-packages/yaml/parser.py", line 138, in parse_implicit_document_start
    StreamEndToken):
  File "/usr/lib/python2.4/site-packages/yaml/scanner.py", line 116, in check_token
    self.fetch_more_tokens()
  File "/usr/lib/python2.4/site-packages/yaml/scanner.py", line 252, in fetch_more_tokens
    return self.fetch_plain()
  File "/usr/lib/python2.4/site-packages/yaml/scanner.py", line 679, in fetch_plain
    self.tokens.append(self.scan_plain())
  File "/usr/lib/python2.4/site-packages/yaml/scanner.py", line 1308, in scan_plain
    "Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.")
yaml.scanner.ScannerError: while scanning a plain scalar
  in "<string>", line 1, column 58:
     ... "html":"<html><body><div style="color:#000; background-color:#ff ... 
                                         ^
found unexpected ':'
  in "<string>", line 1, column 63:
     ... ":"<html><body><div style="color:#000; background-color:#fff; fo ... 
                                         ^
Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.
有什么解决办法吗

这起作用了

import yaml

input = r'{"method":"Send", "buf":{"html":"<html><body><div style=\"color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt\"><ul><li>Sample message</li><li>Parse it<br></li></ul></div></body></html>","text":"\t* Sample message\n\t* Parse it\n"}} '
print yaml.load(input)

在我看来这是一个正确的错误。html键未正确转义,因此html键的值以style=出错后生成内容结尾。您正在解析的值不是有效的JSON。是的..谢谢..我认为\n正确地转义了它。但是当整个输入都以“r”作为前缀时,它就可以工作了。为什么不直接使用json模块呢?是的。我尝试了不带前缀r的SimpleJSON,但得到了相同的错误。现在前缀r很好用,我觉得这是个正确的错误。html键未正确转义,因此html键的值以style=出错后生成内容结尾。您正在解析的值不是有效的JSON。是的..谢谢..我认为\n正确地转义了它。但是当整个输入都以“r”作为前缀时,它就可以工作了。为什么不直接使用json模块呢?是的。我尝试了不带前缀r的SimpleJSON,但得到了相同的错误。现在加上前缀r,效果很好