我想通过一个十六进制转储以搜索testHexData.txt匹配十六进制的字符串,即有可能是-20F09FE520F09FE51CF09FE518F09FE514F09FE50000A0E10CF09FE508F09FE5CEFABEBA300B00007C000028700000284900A0E3CC0100EB080200EA8716A0E3020BA0E3010080E000D0A0E194499FE5000094E5000050E30200000AC20100EB044084E2F9FFFFEA10089FE5000090E5F00000E28716A0E30000 在testHex.txt中,可能存在或不存在于testHexData.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
答案 0 :(得分:1)
您需要将整个文件加载到内存中(如果它很大则不好)或者将其放入chucks中。我将下面的内容调整为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:]