读取数据的文件,使从对象列表

问题描述 投票:0回答:5

我有一个单独的文件是这样一些数据:

bob 11 20
sam 30 19
jay 50 10

等等......我想:

  1. 打开文件。
  2. 阅读每一行。
  3. 请与该行的数据的对象。

我要它是这样的:

with open("data.txt") as f:
    for lines in f:
        f.readlines()
data = lines.split()

这是为了确保每个线保持在它自己的列表选择正确的方法是什么?像例如[鲍勃,11,20]?

python list readfile
5个回答
1
投票

你可以遍历列表中的理解文件生成每行分成项目的列表:

with open("data.txt") as f:
    data = [line.split() for line in f]

0
投票

不,这会给你只有最后一行,则应该做这样的:

data = []
with open("data.txt") as f:
    for line in f:
        data.append(line.split())

0
投票

就在今天,有很多名单处理,我可以提供另一种解决方案:让每一行作为一个列表,并将这些列表的列表,如[['bob 11 20'], ['sam 30 19'], ['jay 50 10']]我用这个函数:

def read(): reader = csv.reader(open("list.txt"), delimiter="\t") list = [r for r in reader] print(list)

有很多的方法来处理名单,并为您的项目的工作原理是“正确”的方式之一。今天早些时候,我被戏弄除了SQLAlchemy的查询到字典和转换那些成字符串和管道的出日期时间格式,其附加他们都一起回来!你可以保留行,如果单独这是你需要什么,或者通过在它们与功能再次迭代,拿出更细致的数据为您的项目。祝好运!


0
投票

我已经定义了正在使用该文件中的每一行创建的Person类(作为对象的示例)

class Person:
    def __init__(self, name, age, weight):
        self.name = name
        self.age = age
        self.weight = weight

    def __str__(self):
        return 'name:{},age:{},weight:{}'.format(self.name, self.age, self.weight)


persons = []
with open('data.csv', 'r') as f:
    lines = f.readlines()
    for line in lines:
        fields = line.split(' ')
        persons.append(Person(fields[0], fields[1], fields[2]))
for person in persons:
    print(person)


0
投票

此代码可以帮助你:

data = []
lines = [line.rstrip('\n') for line in open('data.txt')]
for line in lines:
   data.append({'name' : line.split()[0], 'something1' : line.split()[1], 'something2' : line.split()[2]})

你可以循环,甚至获取数据信息很容易

© www.soinside.com 2019 - 2024. All rights reserved.