Python如何从字符串中删除\"

RYA*_*YAN 5 python

我从网上的某个地方获得了这个代码,并将其保存在一个名为"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)

提前致谢!

Wil*_*ill 2

我们可以将重复的双引号转换为一组双引号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)