python: split() 效率 vs 字符抓取方法

标签 python string performance file split

我有一个非常大的文本文件需要解析一些信息。我所做的每一行都会检查某些关键字(我称之为“标志”)。一旦找到“标志”,我就会调用下面的方法并收集标志后面的数据(通常只是名称或数字),以查找标志后面的信息我使用了下面的方法(有效):

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/

相关文章:

python - 没有这样的文件或目录异常

python - 拆分字符串的最佳方法

java - 使用正则表达式进行拆分,无法正确返回数字

java - Android 中的字符串下标和上标

mysql:复制数据或 LIKE 子句

python - 为什么 Python 内置的 sum 函数中有一个 start 参数?

python - Pandas Python - 类型错误 : bad operand type for unary ~: 'float'

php - Simpe Loop 平方整数值在 C 中比在 PHP 中慢

c# - 删除字符串中第一个字符的最快方法

python - python中具有相同名称的对象引用不同的id