这种方法在Python中运行得很好:
with open(file) as f:
for line in f:
for field in line.rstrip().split('\t'):
continue
然而,这也意味着我每次读两行。首先,我遍历文件的每个字符并搜索换行符,然后循环遍历该行的每个字符并搜索制表符空格。是否有内置的分割线的方法,同时避免在同一组字符上循环两次?如果这是一个愚蠢的问题,请道歉。
答案 0 :(得分:4)
如果你担心这种效率水平,那么你可能不应该用Python编程。该循环中发生的大多数事情发生在C中(如果您正在使用CPython实现)。您不会找到一种更有效的方法来使用纯python方法处理数据,或者不创建非常复杂的循环结构。
答案 1 :(得分:2)
如果我想避免在行上循环并一次处理整个文件,我会使用正则表达式。此外,正则表达式应该非常快。
import re
regexp = re.compile("\n+")
with open(file) as f:
lines = re.split(regexp, f.read())
现在\ n匹配一个或多个换行符并在那里拆分文件。结果是包含所有行的python列表。如果要分割另一个字符,例如空格(以及制表符和换行符),则用\ s +替换\ n +。根据您对线条的要求,这可能不会更快。 Timeit是你的朋友。
有关pythons regexp的更多信息: https://docs.python.org/2/library/re.html