AST未正确分析带有转义反斜杠的字符串



注意 我无法在创建时修改s ,理想情况下我正在通过ast寻找方法

以下表达式

import ast
s = 'func(arg="\\my\network\drive")'
ast.parse(s).body[0].value.keywords[0].value.s

将返回

'\mynetwork\drive'

在不按以下手动修改s的情况下,有没有办法绕过这个问题

ast.parse(s.replace('\', '\\')).body[0].value.keywords[0].value.s

预期输出为:

"\\my\network\drive"

ast模块实际上是在正确解析输入。您对所涉及的字符串表示有些误解。根据实际需要,解决方案可能是使用原始字符串文字(注意r(:

s = r'func(arg="\\my\network\drive")'

就目前情况来看,您编写的字符串文字表示Python源代码

func(arg="\mynetworkdrive")

而不是源代码

func(arg="\\my\network\drive")

而CCD_ 6正在按照Python语法所说的方式处理CCD_ 7转义


如果您希望以某种方式撤消对已处理字符串的字符串转义处理,这是不可能的。字符串转义处理不是从输入到输出的内射映射。无法恢复未处理的表单;首先需要避免字符串转义处理。

最新更新