是否存在用于读取行然后拆分行的快速Python内置方法?

时间:2014-09-04 11:11:29

标签: python python-3.x split readline itertools

这种方法在Python中运行得很好:

with open(file) as f:
    for line in f:
        for field in line.rstrip().split('\t'):
            continue

然而,这也意味着我每次读两行。首先,我遍历文件的每个字符并搜索换行符,然后循环遍历该行的每个字符并搜索制表符空格。是否有内置的分割线的方法,同时避免在同一组字符上循环两次?如果这是一个愚蠢的问题,请道歉。

2 个答案:

答案 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