我是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
但我觉得必须有一个更有效的解决方案,这将有所帮助,因为我需要这个来读取一堆非常大的文件。
有人可以帮我找一个吗?
谢谢!
答案 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'