[英]Remove \x-escaped sequences from a string
我有一個十六進制字符串,我需要通過檢查'\\'是否為值來比較字符串,然后進行編碼操作
value='\x1a\x01'
(Pdb) value.encode("hex")
'1a01'
但是當我這樣檢查時返回false
(Pdb) '\\' in value
False
您可以使用re.sub
對x轉義的序列進行編碼。
首先,定義一個將捕獲這些序列的正則表達式。
import re
pattern = re.compile(r'\\x[0-9a-fA-f]{2}') # matches \x and two-digit hex value
請注意, \\x
需要轉義,以便re編譯器不會將其拒絕為偽正則表達式轉義序列。
現在定義一個將對匹配序列進行編碼的函數。
def enc(match):
return match.group(0).decode('string-escape').encode('hex')
編碼時,我們需要首先從'string-escape'解碼,因為我們需要對輸入字符串進行轉義,以便\\x..
序列匹配。
現在,對輸入字符串的字符串轉義版本執行替換,記住之后要解碼輸出(否則,將\\n
這樣的序列轉義):
s = 'abc\x1a\x01def'
escaped = re.sub(pattern, enc, s.encode('string-escape'))
result = escaped.decode('string-escape')
print result
abc1a01def
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.