在Python中搜索连续字符串以查找匹配项

2024-09-29 23:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个十六进制转储中搜索匹配的十六进制字符串,ie输入测试十六进制数据.txt可能有-20f09fe520f09fe51cf09fe518f09fe514f09fe50000a0e10cf09fe508f09fe5cefabeba300b0007c0002870000284900a0e3cc0100eb08020ea8716a0e3020ba0e301080e0000d0a0e194499fe5000094e500005000e30200000ac20100eb044084e2f9ffea10089fe5000090e5f0000e28716aoe30000 在测试十六进制.txt可能会有字符串,也可能没有测试十六进制数据.txt如20F09FE、518F09FE、FGG7988H等。在

我找到了下面这段代码,当要搜索的数据是列表格式时,即。 猪 狗 猫 但如果要搜索的数据是一个连续的字符串,则不是这样。代码运行时没有任何错误,但不会产生结果。我确信解决办法很简单,但我在绕圈子试图找到它。我非常感谢你的帮助。谢谢:)

file1 = set(line.strip() for line in open(r'C:\Python27\testHexData.txt'))

file2 = set(line.strip() for line in open(r'C:\Python27\testHex.txt'))

for line in file1 & file2:

    if line:

        print line

Tags: 数据字符串代码intxtforlineopen
1条回答
网友
1楼 · 发布于 2024-09-29 23:32:49

你要么需要将整个文件加载到内存中(如果文件太大,就不太好),要么就把它放到卡盘里。我调整了下面的卡盘在2000大小的部分。假设您只需要输出文件中的模式

patterns = set(line.strip() for line in open(r'C:\Python27\testHex.txt'))
max_pattern_len = max([len(p) for p in patterns])
with open(r'C:\Python27\testHexData.txt') as hex_file:
    prev_segment_part = ''
    for segment in hex_file.read(2000):
         seg = prev_segment_part + segment
         for pattern in list(patterns):
            if pattern in seg:
                print "Found:", pattern
                patterns.remove(pattern)
         prev_segment_part = seg[-max_pattern_len:]

相关问题 更多 >

    热门问题