[英]Python: efficient way to read text file with varying delimiters (spaces)
我是 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
但我覺得必須有一個更有效的解決方案,這會很有幫助,因為我需要它來讀取一堆非常大的文件。
有人可以幫我找一個嗎?
謝謝!
我會嘗試 pandas.read_csv,它是一個非常強大的 csv 閱讀器。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html它可以選擇使用正則表達式作為分隔符,這非常適合您的用例。
您可以通過幾行代碼實現這一點,無需任何額外的導入。 發電機非常適合這種類型的工作。 話雖如此,如果您經常使用大型數據集,pandas 值得研究,它可能會改變您的生活。
with open('text.txt') as f:
data = f.read()
split = [x for x in data.split()]
使用帶有正則表達式的 re 庫,這是一種解析文本的簡單方法。
import re
m = re.search('(?<=abc)def', 'abcdef')
m.group(0)
'def'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.