我有一个项目,我有一个文件,我需要从文件中提取字符串。基本上想到了linux中的“strings”命令,但我在python中这样做。下一个条件是文件作为流(例如字符串)提供给我,因此使用其中一个子进程函数来运行字符串的明显答案也不是一个选项。
我写了这段代码:
def isStringChar(ch):
if ord(ch) >= ord('a') and ord(ch) <= ord('z'): return True
if ord(ch) >= ord('A') and ord(ch) <= ord('Z'): return True
if ord(ch) >= ord('0') and ord(ch) <= ord('9'): return True
if ch in ['/', '-', ':', '.', ',', '_', '$', '%', '\'', '(', ')', '[', ']', '<', '>', ' ']: return True
# default out
return False
def process(stream):
dwStreamLen = len(stream)
if dwStreamLen < 4: return None
dwIndex = 0;
strString = ''
for ch in stream:
if isStringChar(ch) == False:
if len(strString) > 4:
#print strString
strString = ''
else:
strString += ch
这在技术上有效,但速度很慢。例如,我能够在 500Meg 的可执行文件上使用 strings 命令,它在不到 1 秒的时间内生成了价值 300k 的字符串。我通过上面的代码运行了相同的文件,花了 16 分钟。
是否有一个库可以让我在没有 python 延迟负担的情况下做到这一点?
谢谢!