簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM