python的新手,并尝试学习文件i / o的绳索。
我正在使用以下格式从大型(200万行)文件中提取行:
56fr4
4543d
4343d
5irh3
这是我用来返回代码的函数:
def getCode(i):
with open("test.txt") as f:
for index, line in enumerate(f):
if index == i:
code = # what does it equal?
break
return code
一旦索引到达正确的位置(i),我用什么语法来设置代码变量?
答案 0 :(得分:11)
code = line.strip()
将删除尾随的新行时,将代码分配给等于i的行号。
您还需要稍微更新一下代码
def getCode(i):
with open('temp.txt', 'r') as f:
for index, line in enumerate(f):
if index == i:
code = line.strip()
return code
为什么需要.strip()
>>> def getCode(i):
... with open('temp.txt') as f:
... for index, line in enumerate(f):
... if index == i:
... code = line
... return code
...
>>> getCode(2)
" 'LINGUISTIC AFFILIATION',\n"
是的,“'LINGUISTIC AFFILIATION',”是我目前的temp.txt'
答案 1 :(得分:6)
enumerate
将一个迭代器转换为另一个迭代器,这样你迭代的东西就成了一对(数字ID,来自底层迭代器的原始项)。
在我们的案例中:
for index, line in enumerate(f):
f
是文件对象。文件对象是迭代器:它们遍历文件的行。
我们将它转换为迭代器(行号,行文件)对。
for
循环语法遍历迭代器,并将(行号,文件行)对分配给变量:(index,line)。这只是将一个元组分配给另一个元组的正常行为。
因此,每次循环时,index
都会被分配一个行号,line
会从文件中分配相应的行。文件中的行是您想要的(可能有一些格式),line
包含它,所以......
如果上述任何内容没有意义,您可能需要重新阅读该语言的介绍。