读取数据文件并从对象中列出

时间:2019-02-07 05:50:36

标签: python list readfile

我在一个单独的文件中有一些数据,如下所示:

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()

这是确保每一行都保存在自己的列表中的正确方法吗? 例如[bob,11,20]吗?

5 个答案:

答案 0 :(得分:1)

您可以以列表理解的方式遍历文件生成器,并将每一行拆分为项目列表:

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

答案 1 :(得分:0)

不,这只会给您最后一行, 您应该这样做:

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

答案 2 :(得分: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]})

您可以非常轻松地循环甚至获取数据信息

答案 3 :(得分: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查询分解为字典,然后将其转换为字符串,然后将它们以日期时间格式输出,将它们全部附加在一起!您可以根据需要单独保存行,或者通过使用函数再次对其进行遍历,从而为项目提取更多的细粒度数据。祝你好运!

答案 4 :(得分: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)