我有一个非常大的文本文件需要解析一些信息。我所做的每一行都会检查某些关键字(我称之为“标志”)。一旦找到“标志”,我就会调用下面的方法并收集标志后面的数据(通常只是名称或数字),以查找标志后面的信息我使用了下面的方法(有效):
def findValue(string, flag):
string = string.strip()
startIndex = string.find(flag) + len(flag)
index = startIndex
char = string[index:index+1]
while char != " " and index < len(string):
index += 1
char = string[index:index+1]
endIndex = index
return string[startIndex:endIndex]
但是,如果我只使用 split() 以空格作为分隔符,然后获取列表中的下一项而不是“爬行”字符,则会容易得多。
我正在解析的日志文件非常大(大约 150 万行或更多行),所以我想知道与我当前的方法相比,在行上使用 split() 是否会损害我的效率以及有多大影响。
最佳答案
I did some timing tests using string 'oabsecaosbeoiabsoeib;asdnvzldkxbcoszievbzldkvn.zlisebv;iszdb;vibzdlkv8niandsailbsdlivbslidznclkxvnlidbvlzidbvlzidbvlkxnv'
, searching for '8'
, each 100000 times:
您的方法:2.156 秒
str.split
:0.151秒
另一个测试,更现实一些:'你好,这是为了堆栈溢出,我绝对讨厌输入不必要的字符'
您的方法:0.317秒
str.split
:0.267秒
最终测试,将上述字符串乘以 100 倍:
您的方法:0.325秒
str.split
:7.376秒
不管这说什么。
就你而言,对于超大字符串,我肯定会使用你的函数!
关于python: split() 效率 vs 字符抓取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31438991/