[英]Strip \x00 and \x02 from string
我正在讀取一個二進制文件來獲取它包含的信息。 我的目標是從文件中的特定位置開始提取一些字符和可變長度。 我讀了如下文件:
with open("raw_files/P1925aM", "rb") as binary_file:
binary_file.seek(436, 0)
some_information = binary_file.read(331)
some_information = some_information.decode('ascii').rstrip('\x00')
binary_file.close()
輸出是一個變量(類'字節'),它包含如下內容:
“17627005 SWU1.1 \\ x00 \\ x00 \\ x00 ....”
到目前為止,我設法將字節變量解碼為ASCII並使用以下方式剝離'\\ x00:
some_information = some_information.decode('ascii').rstrip('\x00')
輸出如下:17627005 SWU1.1這正是我想要的。
現在我有一個變量(類'str')。 如果變量看起來像這樣我現在遇到的問題:
“17627005 SWU1.1 \\ x02 \\ x00 \\ x00 ......”
some_information = some_information.decode('ascii').rstrip('\x02')
不起作用。 輸出保持“17627005 SWU1.1 \\ x02 \\ x00 \\ x00 ......”
我在這里做錯了什么提示?
strip
族函數僅從字符串的末尾刪除; 你的\\x02
不是字符串中的最后一個字符。 如果要從字符串的右側刪除\\x00
和\\x02
任意組合,請將兩者都傳遞給rstrip
:
some_information = some_information.decode('ascii').rstrip('\x00\x02')
您可以使用正則表達式匹配可打印字符:
import re
...
rawdata = some_information.decode('ascii')
result = re.match(r"[\x20-\x7E]+", rawdata).group()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.