Python 从文本文件转换为类对象
我正在为一件事挣扎,最后我决定在这里寻求帮助 正如标题所述,我有一个包含以下内容的文本文件: 乌尔坎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个参数的对象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个参
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