簡體   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