有没有一个快速的Python内置方法来读取行,然后拆分它们?

2024-04-26 17:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

此方法在Python中运行良好:

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

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


Tags: 文件方法infieldforaswithline
2条回答

如果我想避免在行上循环并一次性处理整个文件,我会使用正则表达式。而且,正则表达式应该非常快。你知道吗

import re
regexp = re.compile("\n+")
with open(file) as f:
   lines = re.split(regexp, f.read())

现在\n匹配一个或多个换行符并在那里拆分文件。结果是一个包含所有行的python列表。如果要用另一个字符(例如空格(以及制表符和换行符))拆分,可以将\n+替换为\s+。这取决于你想对线路做什么,可能不会更快。是你的朋友。你知道吗

有关pythons regexp的更多信息: https://docs.python.org/2/library/re.html

如果您担心这样的效率级别,那么您可能不应该使用Python编程。该循环中发生的大部分事情都发生在C中(如果您使用的是CPython实现)。使用纯python方法或不创建非常复杂的循环结构,您将找不到更有效的方法来处理数据。你知道吗

相关问题 更多 >