我在一个单独的文件中有一些数据,如下所示:
bob 11 20
sam 30 19
jay 50 10
以此类推...我正在尝试:
我正在这样做:
with open("data.txt") as f:
for lines in f:
f.readlines()
data = lines.split()
这是确保每一行都保存在自己的列表中的正确方法吗? 例如[bob,11,20]吗?
答案 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)