繁体   English   中英

python regex:仅在尚未转义的情况下转义非法字符

[英]python regex: escape illegal characters only if it's not escaped already

现在,我将文件作为字符串输入,并将其格式化为json。 该文件包含我要转义的\\ r,\\ n字符,但是文件中已经存在已转义那些非法字符的json对象,例如\\\\ r和\\\\ n。 因此,现在我只想在\\ r \\ n字符前面不加\\的情况下才用\\\\ r \\\\ n替换\\ r \\ n字符

我已经在下面尝试过了..但是我不确定为什么它不起作用

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

任何建议,将不胜感激!

您可以使用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  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM