【问题标题】:Find for a start hex string, save the hex string after that to a new file (Python)查找起始十六进制字符串,然后将十六进制字符串保存到新文件(Python)
【发布时间】:2021-12-16 19:03:44
【问题描述】:

我想打开一个文本文件,搜索以 45 3F 开头的十六进制模式,获取以下六个十六进制数字,例如 45 4F 5D 并将所有匹配的数字放入一个新文件中。我也知道它总是以 00 00 结尾。

所以,给定一个输入文件,如:

bla bla sdsfsdf 45 3F 08 DF 5D 00 00 dsafasdfsadf 45 3F 07 D3 5F 00 00 xztert

结果应该是:

08 DF 5D 07 D3 5F

我该怎么做?

我试过了:

with open('file.txt') as reader:
    my_data = reader.read()

matches = re.findall(r"45 3F ([0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2})", my_data)
data_to_write = " ".join(matches)
with open('out.txt', 'w') as writer:
    writer.write(data_to_write)

但它只打印[]

【问题讨论】:

  • 欢迎来到 Stack Overflow。 “我已经尝试过 [code] 但 [它没有显示任何匹配项]” 那么,您确定文件实际上包含任何匹配的文本吗?你试过debug代码吗? 究竟你对为什么会得到你所做的结果的理解是什么?请注意you are expected to try to do some research and problem-solving before asking.
  • 还请注意我对您的问题所做的修改。这不是一个讨论论坛,我们不希望用文本“标记”问题(在实际标记功能之外),或者用问候和签字来装饰。
  • 再次回答更新检查!

标签: python file search hex line


【解决方案1】:
import re
def listToString(s):
    str1 = ""
    for ele in s:
        str1 += str(ele)
    return str1

with open('a.txt') as reader:
    for i in reader:
        i = i.strip()
        #r1 = re.findall(r"^\w+", xx)
        r1 = re.findall(r'45 3F(.*?)00', i)
        print(listToString(r1))
        open('out.txt', 'a+').write(listToString(r1) + '\n')

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-04
  • 2014-03-07
  • 2023-04-08
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
相关资源
最近更新 更多