我从网上的某个地方获得了这个代码,并将其保存在一个名为"doc"的变量中.
doc = """{"Grade": " \"B+\" "}"""
Run Code Online (Sandbox Code Playgroud)
我想要doc打印
{"Grade": " B+ "}
Run Code Online (Sandbox Code Playgroud)
这样我就可以使用ast.literal_eval()将"doc"转换为字典.
但是当我尝试:
print(doc)
Run Code Online (Sandbox Code Playgroud)
它打印:
{"Grade": " "B+" "}
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,因为ast.literal_eval()将不起作用.
要么:
print(doc.replace("\"", ''))
Run Code Online (Sandbox Code Playgroud)
这给了我:
{Grade: B+ }
Run Code Online (Sandbox Code Playgroud)
它完全删除了双引号,这不是我想要的,因为ast.literal_eval()给出了错误.
那么我怎样才能改变"doc"呢
doc = """{"Grade": " \"B+\" "}"""
Run Code Online (Sandbox Code Playgroud)
有些工作后可以打印下面的代码吗?
{"Grade": " B+ "}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我们可以将重复的双引号转换为一组双引号re.sub():
In [95]: doc = """{"Grade": " \"B+\" "}"""
In [96]: doc
Out[96]: '{"Grade": " "B+" "}'
In [98]: re.sub(r'["]\s*["]', '"', doc)
Out[98]: '{"Grade": "B+"}'
In [99]: import ast
In [101]: doc = re.sub(r'["]\s*["]', '"', doc)
In [102]: ast.literal_eval(doc)
Out[102]: {'Grade': 'B+'}
Run Code Online (Sandbox Code Playgroud)