我试图在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",那么它不需要向非转义字符添加双反斜杠。
所以在这里,我不需要用双反斜杠来转义每个反斜杠,而是用双反斜杠来转义每个特殊的转义字符。
任何帮助都是非常感谢的。
发布于 2016-01-07 13:00:13
我发现了re.escape,正如Karoly指出的。这就是它的工作原理。
>>> 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'这就是我想出的真正有用的方法。
https://stackoverflow.com/questions/34655254
复制相似问题