我正在尝试在python中编写一个正则表达式,我希望用\n
,\t
等替换\\n
,\\t
等转义字符。
我试过这只是为了逃避换行和标签。
re.sub(r'\t',r'\\t',re.sub(r'\n',r'\\n',text))
例如:
>>> print re.sub(r'\t',r'\\t',re.sub(r'\n',r'\\n','ads;lfkjaldsf\ndsklajflad\tkjhklajf\n'))
ads;lfkjaldsf\ndsklajflad\tkjhklajf\n
假设我有文字说"\a\b\c\d\n\g\h\t"
,那么它不需要为非转义字符添加双反斜杠。
所以在这里我不需要使用双反斜杠来逃避每个反斜杠,而是每个带有双反斜杠的特殊转义字符。
感谢任何帮助。
答案 0 :(得分:2)
我找到了Karoly Horvath指出的re.escape
。这是它的工作原理。
>>> re.escape('ads;lfkjaldsf\ndsklajflad\tkjhklajf\n')
'ads\\;lfkjaldsf\\\ndsklajflad\\\tkjhklajf\\\n'
<强>更新强>
虽然我看到re.escape
逃脱了太多。空格,分号和许多不需要在我的案例中逃脱的角色。
>>> re.sub(r'(\n|\t|\"|\')',lambda m:{'\n':'\\n','\t':'\\t','\'':'\\\'','\"':'\\\"'}[m.group()], "hello hi \n \'GM\' \t TC \n \"Bye\" \t")
'hello hi \\n \\\'GM\\\' \\t TC \\n \\"Bye\\" \\t'
这就是我想出的真正有用的东西。