簡體   English   中英

從字符串中刪除\\ x轉義的序列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM