从 txt 文件导入信息到 类

Import information to classes from a txt file

我的问题是 .txt 文件中的信息有 10 列,列之间的 space 不相同。

这是示例:

Date       Time      Latit(N)  Long(E)   Depth(km)     MD   ML   Mw    Region                                            Method
---------- --------  --------  -------   ----------    ------------    -----------                                       -------
2021.12.18 22:27:57  36.2620   28.9352       10.5      -.-  3.1  3.2   AKDENIZ                                           Quick
2021.12.18 21:53:20  35.0258   25.7753        5.0      -.-  2.7  -.-   GIRIT ADASI ACIKLARI (AKDENIZ)                    Quick
2021.12.18 21:26:37  36.9778   27.7713        3.8      -.-  1.6  -.-   GOKOVA KORFEZI (AKDENIZ)                          Quick
2021.12.18 20:35:30  37.8640   35.1760        5.4      -.-  1.5  -.-   PINARBASI-CAMARDI (NIGDE)                         Quick

我需要以某种方式将信息导入我创建的 class。

这里是 class:

class txt_data:
    def __init__(self, date, time, latit, long, depth, md, ml, mw, region, method):
       
        self.date = date
        self.time = time
        self.latit = latit 
        self.long = long
        self.depth = depth
        self.md = md
        self.ml = ml
        self.mw = mw
        self.region = region
        self.method = method 

    def date(self):
        return self.date()
    def time(self):
        return self.date()
    def latit(self):
        return self.latit()
    def long(self):
        return self.long()
    def depth(self):
        return self.depth()
    def md(self):
        return self.md()
    def ml(self):
        return self.ml()
    def mw(self):
        return self.mw()
    def region(self):
        return self.region()
    def method(self):
        return self.method()        

a_file = open("input.txt")
for line in a_file:
    date, time, latit, long, depth, md, ml, mw, region, method = line.strip().split(' ')

我试过 strip().split(' ')(没用)

如果有人有任何建议,我将不胜感激。

使用 regex 将所有列数据与捕获组匹配

^([\d.]+)\s+([\d:]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\w\s()-]+?)\s+(\w+)$
import re

ptn = re.compile(
    r"^([\d.]+)\s+([\d:]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\w\s()-]+?)\s+(\w+)$")

result = []
with open("data.txt") as fic:
    fic.readline()  # header
    fic.readline()  # dash
    for line in fic:
        parts = ptn.findall(line.rstrip())
        result.append(txt_data(*parts[0]))

请注意,以下是不正确的,因为 self.date 是一个 str,您不能“调用”它

def date(self):
    return self.date()

删除该方法,或使用getter正确的方法

def __init__(self, date, time, latit, long, depth, md, ml, mw, region, method):
    self._date = date

@property
def date(self):
    return self._date