【发布时间】:2015-07-15 19:07:42
【问题描述】:
我有一个非常大的文本文件来解析一些信息。我所做的每一行都会检查某些关键字(我称它们为“标志”)。一旦我找到“标志”,然后我调用下面的方法并收集标志后面的数据(通常只是一个名称或数字)以查找标志后面的信息我使用下面的方法(有效):
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() 是否会损害我的效率以及会损害多少。
【问题讨论】:
-
char = string[index:index+1]在每个循环中创建一个新字符串,非常低效。split (string[startIndex:])会比您当前的方法快得多。 -
string是否包含文件的全部内容,还是仅包含一行? -
"string" 只是一行
-
另外,如果我错了,请纠正我,
string[i]不等于string[i:i+1]吗?而且也许更有效率?
标签: python string performance file split