Python中的Unescape字符串

时间:2016-06-08 03:15:30

标签: python regex string

我有一个包含输入列表的输入文件,每行一个。每行输入都用双引号括起来。输入有时会在封闭的双引号中使用反斜杠或少量双引号(请参阅下面的示例)。

示例输入 -

"each line is enclosed in double-quotes"
"Double quotes inside a \"double-quoted\" string!"
"This line contains backslashes \\not so cool\\"
"too many double-quotes in a line \"\"\"too much\"\"\""
"too many backslashes \\\\\\\"horrible\"\\\\\\"

我想采取上述输入,只需将行中带有转义双引号的转换为后退嘀嗒`

我认为有一个直截了当的单行解决方案。我试过以下但是它没有用。任何其他单行解决方案或对以下代码的修复将不胜感激。

def fix(line):
    return re.sub(r'\\"', '`', line)

输入行 3 5 失败。

"each line is enclosed in double-quotes"
"Double quotes inside a `double-quoted` string!"
"This line contains backslashes \\not so cool\`
"too many double-quotes in a line ```too much```"
"too many backslashes \\\\\\`horrible`\\\\\`

我能想到的任何修复都会破坏其他线条。请帮忙!

2 个答案:

答案 0 :(得分:2)

这不是你所要求的,因为它取代"而不是`,但我会提到它......你总是可以利用csv来做{{1}正确转换你:

\"

如果重要的是它们是实际的,那么你可以简单地替换>>> for line in csv.reader(["each line is enclosed in double-quotes", ... "Double quotes inside a \"double-quoted\" string!", ... "This line contains backslashes \\not so cool\\", ... "too many double-quotes in a line \"\"\"too much\"\"\"", ... "too many backslashes \\\\\\\"horrible\"\\\\\\", ... ]): ... print(line) ... ['each line is enclosed in double-quotes'] ['Double quotes inside a "double-quoted" string!'] ['This line contains backslashes \\not so cool\\'] ['too many double-quotes in a line """too much"""'] ['too many backslashes \\\\\\"horrible"\\\\\\'] 模块返回的文本。

答案 1 :(得分:1)

在反斜杠后添加+

return re.sub(r'\\+"', '`', line)
相关问题