簡體   English   中英

從字符串中剝離\\ x00和\\ x02

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

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