从文本文件转换为类对象

2024-06-16 10:10:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我终于决定在这里寻求帮助。在

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

Wulkan 4487.9361 False

Merkury 56847.1906 True

Wenus 107710.46639999999 True

Ziemia 149597.87 True

Mars 227388.7624 True

Faeton 403914.249 False

Jowisz 777908.924 True

Saturn 1425667.7011 True

Uran 2870783.1253 True

Neptun 4496911.9722 True

Pluton 5906123.9076 True

现在我试着把它转换成带有3个参数的对象,比如

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

就我而言:

^{pr2}$

我怎样才能把我在各种行星上得到的每一张单子精确到物体上呢?在


Tags: falsetrue标题mars文本文件saturnplutonuran
3条回答

这是一种方法:

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.split()接收的列表解压为Planets.__init__的三个参数

Python有一个键入.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)

输出:

^{pr2}$

你解决这个问题的方法有点棘手我是怎么做到的

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)

现在你可以得到任何有行星名称的物体

相关问题 更多 >