在尝试将数据从txt文件存储到python类时,我遇到了一个问题,我不知道如何在类中存储信息,并通过索引和数据类型检索它。在所有这些转换之后,我有n个有数据的列表。
下面是来自txt文件的示例数据:
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
2021.12.18 19:23:36 37.8505 26.7575 7.5 -.- 2.0 -.- EGE DENIZI Quick
2021.12.18 18:27:00 37.7900 32.0702 4.3 -.- 1.4 -.- YATAGAN-MERAM (KONYA) Quick
2021.12.18 18:19:10 41.1435 43.9102 9.5 -.- 2.1 -.- ERMENISTAN Quick
2021.12.18 17:19:05 39.8660 41.8363 15.0 -.- 1.6 -.- KAYABASI-KOPRUKOY (ERZURUM) Quick这是一堂课:
import re
class txt_data:
def __init__(self, result):
for i in result:
self.date = result[i][0]
self.time = result[i][1]
self.latit = result[i][2]
self.long = result[i][3]
self.depth = result[i][4]
self.md = result[i][5]
self.ml = result[i][6]
self.mw = result[i][7]
self.region = result[i][8]
self.method = result[i][9]
def date(self):
return self._date
def time(self):
return self._time
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
#regex
ptn = re.compile(
r"^([\d.]+)\s+([\d:]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\w\s()-]+?)\s+([\w]+[\d]+\s+\([^)]*\)|\s+[a-zA-Z]+)$")
result = []
with open("input.txt") as fic:
fic.readline() # header
fic.readline() # dash
for line in fic:
parts = ptn.findall(line.rstrip())
result.append(txt_data)下面是regex之后的数据在循环内部的“部件”中的样子:
[('2021.12.03', '01:50:08', '41.1905', '33.9327', '5.0', '-.-', '1.3', '-.-', 'HUSEYINLI-(KASTAMONU)', ' Quick')]
[('2021.12.03', '01:45:31', '39.1132', '41.1728', '8.4', '-.-', '2.2', '-.-', 'BAGLIISA-KARLIOVA (BINGOL)', ' Quick')]
[('2021.12.03', '00:49:20', '37.6933', '26.0342', '5.0', '-.-', '2.0', '-.-', 'ONIKI ADALAR (MEDITERRANEAN SEA)', ' Quick')]
[('2021.12.03', '00:24:51', '37.1293', '28.6973', '11.3', '-.-', '1.4', '-.-', 'TURGUT-ULA (MUGLA)', ' Quick')]
[('2021.12.03', '00:22:08', '40.7790', '31.5120', '11.2', '-.-', '1.0', '-.-', 'KIZILAGIL-(BOLU)', 'REVISE01 (2021.12.03 00:22:17)')]
[('2021.12.03', '00:08:58', '39.8367', '41.8367', '3.3', '-.-', '0.9', '-.-', 'MARIFET-KOPRUKOY (ERZURUM)', ' Quick')]
[('2021.12.03', '00:04:24', '41.2267', '43.9693', '5.5', '-.-', '1.9', '-.-', 'GURCISTAN', ' Quick')]
[('2021.12.02', '23:49:30', '39.4655', '28.2327', '7.5', '-.-', '2.0', '-.-', 'EMIRLER-BIGADIC (BALIKESIR)', ' Quick')]
[('2021.12.02', '22:42:05', '37.0915', '28.3208', '13.6', '-.-', '0.8', '-.-', 'YENICE-(MUGLA)', ' Quick')]
[('2021.12.02', '22:29:24', '36.9605', '28.1775', '13.0', '-.-', '1.5', '-.-', 'KARACA-MARMARIS (MUGLA)', ' Quick')]问题是如何修复我的类以将数据添加到其中并使用索引进行检索。我试过在课堂上循环,但那不能正常工作。
事先非常感谢。
发布于 2022-01-02 04:33:56
只需将parts列表的第一项发送给您的类,并删除构造函数中的for循环:
import re
class txt_data:
def __init__(self, result):
self.date = result[0]
self.time = result[1]
self.latit = result[2]
self.long = result[3]
self.depth = result[4]
self.md = result[5]
self.ml = result[6]
self.mw = result[7]
self.region = result[8]
self.method = result[9]
#regex
ptn = re.compile(
r"^([\d.]+)\s+([\d:]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\d.]+|-\.-)\s+([\w\s()-]+?)\s+([\w]+[\d]+\s+\([^)]*\)|\s+[a-zA-Z]+)$")
result = []
with open("input.txt") as fic:
fic.readline() # header
fic.readline() # dash
for line in fic:
parts = ptn.findall(line.rstrip())
result.append(txt_data(parts[0]))
print(result[3].region) # PINARBASI-CAMARDI (NIGDE)https://stackoverflow.com/questions/70553417
复制相似问题