我是python的新手,我想创建一个列表列表。
student_details.txt包含以下数据:
101 Rahul
102 Julie
103 Helena
104 Kally
CODE
lis = []
with open("student_details.txt" , "r+") as f:
for i in range(1,3,1):
for data in f.read().split():
lis.append(data)
print(lis)
我想要的输出
[[101,Rahul],[102,Julie],[103,Helena],[104,Kally]]
输出我
['101','Rahul','102','Julie','103','Helena','104','Kally']
答案 0 :(得分:3)
您可以逐行读取句柄或使用readlines()
,拆分每一行,附加每个结果等等...修复代码需要删除刚刚读取的range
循环该文件3次(但只有第一次有效读取),并附加行的分割项,使用列表理解更加pythonic:
with open("student_details.txt" , "r+") as f:
lis = [line.split() for line in f]
请注意,line.split()
(没有参数)的好处是它会自动删除行终止符。
但你可以更简单:csv
模块为你做所有的解析:
import csv
with open("student_details.txt" , "r") as f:
cr = csv.reader(f,delimiter=" ")
# iterate on rows and generate list of lists:
result = list(cr)
答案 1 :(得分:1)
您可以按行分割:
lis = []
with open("student_details.txt" , "r+") as f:
for line in f:
data = line.split()
lis.append(data)
print(lis)
结果:
[['101', 'Rahul'], ['102', 'Julie'], ['103', 'Helena'], ['104', 'Kally']]
或者以更紧凑的方式:
with open("student_details.txt" , "r+") as f:
lis = [line.split() for line in f]
print(lis)
结果:
[['101', 'Rahul'], ['102', 'Julie'], ['103', 'Helena'], ['104', 'Kally']]
答案 2 :(得分:1)
您的代码:
lis = []
with open("student_details.txt" , "r+") as f:
for i in range(1,3,1):
for data in f.read().split():
lis.append(data)
print(lis)
注意两个for循环,你正在做的是遍历每一行,然后遍历该行的每个项目。然后,您将每个项目分别推送到列表lis
。
要获得所需的输出,您需要将每行上的两个项目列表推送到列表中。
您实际上已经使用f.read().split()
生成了此项列表,因此您只需要附加此项。
这将为您提供以下内容:
lis = []
with open("student_details.txt" , "r+") as f:
for i in range(1,3,1):
#no second loop here
data = f.read().split()
lis.append(data)
print(lis)
这仍然没有给我们正确的答案,循环是这里的问题, 我们可以通过只是在理论上读取每一行来解决这个问题,而不指定任何范围:
lis = []
with open("student_details.txt" , "r+") as f:
for line in f:
#no second loop here
data = line.split()
lis.append(data)
print(lis)
答案 3 :(得分:1)
最简单的方法是通过list
理解来完成以下操作:
with open("student_details.txt" , "r+") as f:
lis = [line.split() for line in f]
或者如果你想loop
,你可以loop
通过文件而不读它:
with open("student_details.txt" , "r+") as f:
lis = []
for line in f:
lis.append(line.split())
答案 4 :(得分:0)
您也可以尝试这种替代方案。我使用了splitlines()方法。
data = []
f = open('student_details.txt', 'r')
for line in f.read().splitlines():
data.append([line])
print(data)