2024-10-08 20:22:48 发布
网友
我想从包含以下数据的文件创建列表列表:
101 Rahul 102 Julie 103 Helena 104 Kally
代码
我想要的输出
[[101,Rahul] ,[102,Julie] ,[103,Helena] ,[104,Kally]]
我得到的输出
['101', 'Rahul', '102', 'Julie', '103', 'Helena', '104', 'Kally']
您的代码:
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
f.read().split()
这仍然不能给我们正确的答案,循环就是问题所在, 我们可以通过以思想方式阅读每行内容来解决此问题,而不指定任何范围:
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)
您可以逐行迭代句柄或使用readlines(),拆分每一行,附加每个结果,等等。。。修复代码需要删除range循环,该循环只读取文件3次(但第一次只有效读取一次),并附加行的拆分项,使用列表理解来更具python风格:
readlines()
range
with open("student_details.txt" , "r+") as f: lis = [line.split() for line in f]
注意,line.split()(不带参数)最酷的地方是它自动去掉了行结束符。在
line.split()
但您可以使其更简单:csv模块为您完成所有解析:
csv
最简单的方法是通过list理解如下:
list
或者,如果您想loop,您可以loop不读文件:
loop
您的代码:
注意这两个for循环,你要做的是循环遍历每一行,然后遍历该行的每个项目。然后将每个项目单独地推送到您的列表
^{pr2}$lis
。 要获得所需的输出,您需要将每行上的两个项目的列表推送到列表中。 实际上,您已经用f.read().split()
生成这个项目列表,所以您只需要附加这个。 这就给您留下了以下几点:这仍然不能给我们正确的答案,循环就是问题所在, 我们可以通过以思想方式阅读每行内容来解决此问题,而不指定任何范围:
您可以逐行迭代句柄或使用
readlines()
,拆分每一行,附加每个结果,等等。。。修复代码需要删除range
循环,该循环只读取文件3次(但第一次只有效读取一次),并附加行的拆分项,使用列表理解来更具python风格:注意,
line.split()
(不带参数)最酷的地方是它自动去掉了行结束符。在但您可以使其更简单:
^{pr2}$csv
模块为您完成所有解析:最简单的方法是通过
list
理解如下:或者,如果您想
^{pr2}$loop
,您可以loop
不读文件:相关问题 更多 >
编程相关推荐