如何将文件读取为列表的列表?

2024-10-08 20:22:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从包含以下数据的文件创建列表列表:

101 Rahul
102 Julie
103 Helena
104 Kally

代码

^{pr2}$

我想要的输出

[[101,Rahul] ,[102,Julie] ,[103,Helena] ,[104,Kally]]

我得到的输出

['101', 'Rahul', '102', 'Julie', '103', 'Helena', '104', 'Kally']

Tags: 数据代码列表juliepr2rahulhelenakally
3条回答

您的代码:

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()生成这个项目列表,所以您只需要附加这个。 这就给您留下了以下几点:

^{pr2}$

这仍然不能给我们正确的答案,循环就是问题所在, 我们可以通过以思想方式阅读每行内容来解决此问题,而不指定任何范围:

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风格:

with open("student_details.txt" , "r+") as f:    
     lis = [line.split() for line in f]

注意,line.split()(不带参数)最酷的地方是它自动去掉了行结束符。在

但您可以使其更简单:csv模块为您完成所有解析:

^{pr2}$

最简单的方法是通过list理解如下:

with open("student_details.txt" , "r+") as f:
    lis = [line.split() for line in f]

或者,如果您想loop,您可以loop不读文件:

^{pr2}$

相关问题 更多 >

    热门问题