無法找到相應的PEP或Python re
模塊中的一個問題。Python對替換文本中十六進制轉義的支持
有誰知道下列是否計劃修復?
Python不支持替換文本 語法十六進制轉義,即使它支持\ XFF和\ uFFFF的字符串常量。
但它實際上支持標準逃逸像\n
,\r
等
因此,例如一個不能用十六進制'>'
字符替換'<'
字符轉義:
>>> import re
>>> re.sub(r'\x3c', r'\x3e', '\x3c')
'\\x3e'
而不是'\\x3e'
它應該是'>'
。
使用逃脫\n
正常工作:
>>> re.sub(r'a', r'\n', 'a')
'\n'
提前感謝!
UPD:不使用原始字符串不是一個選項。例如,如果模式和替換字符串存儲在配置文件中,那麼如果我在其中寫入\ x3e,讀取時將變爲'\\x3e'
,而不是'>'
。
嘿布萊恩,謝謝你的回覆!不使用原始字符串不是一個選項。例如,如果模式和替換字符串存儲在配置文件中,那麼如果我在其中寫入\ x3e,它將在讀取時變爲''\\ x3e'',而不是'>''。 – kishkin
使用函數作爲'repl'參數是一個非常好的功能,謝謝提及。我完全忘了它。無論哪種方式,你應該使用一些方法來將字符串中的十六進制字符的表示轉換爲實際的字符。我想不出使用'eval()'... – kishkin