我正在嘗試從此字串中提取十六進制數(型別 str):
mystring = b'\r\n CUSD: 2,"062506460642063706270639002006270644062E062F06450629002006230639062F0020062706440625062A063506270644",72\r\n\r\nOK\r\n'
我試過:
hexnumber= m = re.findall(r'[0-9a-fA-F] ' , mystring)
print(hexnumber)
輸出:
['b', 'C', 'D', '1', '0637064406280020063A064A0631002006450648062C0648062F000A002D0020002D0020002D000A00300030003A0627064406420627062606450629000A0030003A0631062C06480639', '72']
我正在尋找的輸出是:
0637064406280020063A064A0631002006450648062C0648062F000A002D0020002D0020002D000A00300030003A0627064406420627062606450629000A0030003A0631062C06480639
uj5u.com熱心網友回復:
您的“字串”實際上不是包含位元組( b'…')的字串,因此您可能應該根據使用的編碼進行解碼(我在這里假設為 utf-8)。
然后我還假設你想提取引號之間的字串,所以我建議使用帶有環視的正則運算式:
import re
out = re.findall(r'(?<=")[a-fA-F\d] (?=")', mystring.decode('utf-8'))
if out:
print(out[0])
# 062506460642063706270639002006270644062E062F06450629002006230639062F0020062706440625062A063506270644
您還可以在模式中設定最少字符數(此處為 8 個或更多):
re.findall(r'[a-fA-F\d]{8,}', mystring.decode('utf-8'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/393375.html
下一篇:什么應該是空字串添加一個值
