Python:使用不同分隔符(空格)读取文本文件的有效方法

时间:2016-04-16 11:47:59

标签: python

我是Python的新手,我正试图找出一种有效的方法来读取类似这样的文本文件:

   345   45678   567        678  78
   789   98733   456        567  67

问题是列是用空格分隔的,但空格的数量不是常数。

我想出了这个:

def fileread(filename):
data=[]
with open(filename) as myfile:
    LINES=myfile.read().splitlines()
myfile.close()
for line in LINES:
    whole_line=line.split(' ')
    dataline=[]
    for element in whole_line:
        if(element!=''):
                dataline.append(int(element))
    data.append(dataline)
return data

但我觉得必须有一个更有效的解决方案,这将有所帮助,因为我需要这个来读取一堆非常大的文件。

有人可以帮我找一个吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

我会尝试pandas.read_csv,是一个非常强大的csv阅读器。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html 它可以选择使用正则表达式作为分隔符,这非常适合您的用例。

答案 1 :(得分:1)

您可以使用几行代码实现此目的,而无需任何额外的导入。发电机非常适合这类工作。话虽这么说,如果你经常使用大型数据集,大熊猫是值得研究的,它可能会改变你的生活。

with open('text.txt') as f:
        data = f.read()

split = [x for x in data.split()]

答案 2 :(得分:-1)

将re库与regex一起使用,这是一种解析文本的简便方法。

import re
m = re.search('(?<=abc)def', 'abcdef')
m.group(0)

'def'