Python 从文本文件转换为类对象

Python 从文本文件转换为类对象,python,python-3.x,Python,Python 3.x,我正在为一件事挣扎,最后我决定在这里寻求帮助 正如标题所述,我有一个包含以下内容的文本文件: 乌尔坎4487.9361假 梅尔库里56847.1906真 Wenus 107710.466399999正确 Ziemia 149597.87正确 火星227388.7624真 费顿403914.249假 Jowisz 777908.924正确 土星1425667.7011真 天王星2870783.1253真 海王星4496911.9722正确 钚5906123.9076正确 现在我试着把它转换成3个参

我正在为一件事挣扎,最后我决定在这里寻求帮助

正如标题所述,我有一个包含以下内容的文本文件:

乌尔坎4487.9361假

梅尔库里56847.1906真

Wenus 107710.466399999正确

Ziemia 149597.87正确

火星227388.7624真

费顿403914.249假

Jowisz 777908.924正确

土星1425667.7011真

天王星2870783.1253真

海王星4496911.9722正确

钚5906123.9076正确

现在我试着把它转换成3个参数的对象

class Planets:
    def __init__(self, name, dist, real):
就我所做的而言:

with open('planety.txt', 'r') as file:
    x = file.read()


for z in x.split("\n"):
    if z:
        planets = z.split(" ")
如何将我在各种行星中得到的每个列表精确到对象中?

这是一种方法:

class Planets:
    def __init__(self, name, dist, real):
        self.name = name

with open('planety.txt', 'r') as file:
    x = file.read()

planets = []
for z in x.split("\n"):
    if z:
        planet = Planets(*z.split())
        planets.append(planet)

for planet in planets:
    print(planet.name)

*解压从z收到的列表。将其拆分为行星的三个参数。uuu init_uuu

您解决此问题的方法有点棘手,我就是这样做的

import csv

_storage = {}

class Planets:
    def __init__(self, name, dist, real):
        self.name = name

with open('doc.txt') as file:
    reader = csv.reader(file, delimiter=' ')
    for row in reader:
        if not len(row) == 0:
            name, dist, real = row
            _storage[name] = Planets(name, dist, real)

现在,您可以获得任何具有行星名称的对象,Python有一个typing.NamedTuple类。用Python≥ 3.6,您可以按如下方式使用该类:

from typing import NamedTuple

class Planet(NamedTuple):
    name: str
    dist: float
    real: bool

planets = []
with open('planets.txt', 'r') as file:
    for line in file:
        name, dist, real = line.rstrip().split()
        planets.append(Planet(name=name, dist=float(dist), real=(real == 'True')))

for p in planets:
    print(p)

p = planets[0]
print(p.name, p.dist, p.real)
输出:


但是我怎样才能创建类行星中的每个对象呢?有一个单独的对象,包含每个行星的参数。行星是行星对象的列表,ech对象包含文本文件中描述的每个行星的参数。是的,我现在可以看到了。谢谢,阿洛:很高兴帮助你。
Planet(name='Wulkan', dist=4487.9361, real=False)
Planet(name='Merkury', dist=56847.1906, real=True)
Planet(name='Wenus', dist=107710.46639999999, real=True)
Planet(name='Ziemia', dist=149597.87, real=True)
Planet(name='Mars', dist=227388.7624, real=True)
Planet(name='Faeton', dist=403914.249, real=False)
Planet(name='Jowisz', dist=777908.924, real=True)
Planet(name='Saturn', dist=1425667.7011, real=True)
Planet(name='Uran', dist=2870783.1253, real=True)
Planet(name='Neptun', dist=4496911.9722, real=True)
Planet(name='Pluton', dist=5906123.9076, real=True)
Wulkan 4487.9361 False