python regex:只有在没有转义的情况下才会转义非法字符

时间:2016-08-03 21:36:32

标签: python json regex

现在我将文件作为字符串并将其格式化为json。该文件包含我想要转义的\ r,\ n字符,但文件中有json对象已经转义了那些非法字符,例如\\ r和\\ n。所以现在我想用\\ r \\ n替换\ r \ n字符,只要它没有前面的\

我在下面尝试了这个..但我不确定为什么它不起作用

re.sub(r'[^\][\n]', r'\\\\n', s)

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:3)

您可以使用RegEx执行此操作:

import re                                    

data = 'Hello\r\nWorld\\r\\n'                
print(data)                                  

print('-'*20)                                

data = re.sub(r'([^\\])\r', '\\1\\\\r', data)
data = re.sub(r'([^\\])\n', '\\1\\\\n', data)
print(data) 

<强>输出:

Hello               
World\r\n           
--------------------
Hello\r\nWorld\r\n  

或者,稍微不同的方法是这样做:

data = 'Hello\r\nWorld\\r\\n'                          
print(data)                                            

print('-'*20)                                          

data = data.replace('\r', '\\r')
data = data.replace('\n', '\\n')
print(data)  

<强>输出:

Hello               
World\r\n           
--------------------
Hello\r\nWorld\r\n