我有这样的文件“as.txt文件““
Sr.No. Name Enrollment Number CGPA Year
1. XYZ 1101111 7.1 2014
2. ZYX 1101113 8.2 2014
3. Abc 1010101 9.1 2014
我想解析这个文件并将数据存储在一个列表中。我想提取每一行并检查其注册号,如果注册号以11开头,则将其保存在secondyearlist中,否则保存在firstyearlist中。你知道吗
这是我尝试过的,但我认为我错了。你知道吗
import struct
with open("as.txt") as f:
# skip first two lines (containing header) and split on whitespace
# this creates a nested list like: [[val1, i1, i2], [val2, i1, i2]]
lines = [x.split() for x in f.readlines()[2:]
# use the list to create the dict, using first item as key, last as values
dict((x[0], x[1:])for x in lines)
f.close()
请帮我做这个。你知道吗
目前还不清楚您希望如何存储问题中的变量。你知道吗
这将读取文件,跳过前两行,并将数据存储在两个字典中:
或者,您可以将其存储为列表。几乎是一样的,您只需使用.append():
另外,当您使用“with open”(“\uuuux”,“\uux”)作为x”打开文件时,您不需要在之后关闭文件。它会自动关闭。你知道吗
可能的解决方案
有许多可能的解决方案,这一个说明了几个典型的结构
叫它吧
很少评论
f.next()
-阅读下一行文字有了一个文件描述符,循环就可以遍历它们。所以你不用打电话
但你也可以做到:
在所有情况下,都会返回行列表。你知道吗
在for循环中迭代时,会使用
next()
方法隐藏对iterable的调用:再一次,我们已经填充了行列表。你知道吗
我们可以使用iterable上的
next()
调用来实现同样的功能,在我们的例子中是openfiledescriptor。你知道吗我们非常聪明,可以立即停止,否则一旦文件中的行用完,就会引发异常
StopIteration
。for
循环自动捕获此异常并停止迭代。你知道吗到现在为止,我们应该明白,通过调用
header = f.next()
,我们读出了第一行。下次在某个迭代中使用f
时,它不会返回并跟随下一行,不再返回头。你知道吗将值解包为变量
我们假设
line.split()
返回5个元素。你知道吗我们可以在一个步骤中把所有5个元素分配到不同的变量中。你知道吗
在我们的解决方案中,我们在
for
循环中使用它。你知道吗上下文管理器会自动调用所创建变量的
close()
处理文件的典型习惯用法如下:
这种
with
构造使用所谓的“上下文管理器”,它能够通过输入块(在with
行上)并在块的末尾执行某些操作来装箱一些值,在我们的示例中,它调用close()
看来你想要的Sr不,我有名单和口述包括在内。你知道吗
相关问题 更多 >
编程相关推荐