注意
我无法在创建时修改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转义
如果您希望以某种方式撤消对已处理字符串的字符串转义处理,这是不可能的。字符串转义处理不是从输入到输出的内射映射。无法恢复未处理的表单;首先需要避免字符串转义处理。