0

我正在尝试使用下面的代码来获取文本文件中的总行数。

totallines = 0
for line in infile:
    totallines += 1

它可以工作,并且可以将正确的数字打印到外壳上。但是,当我将结果分配给:

item = [0]*totallines

将给定的行强制为小写时出现 AttributeError:

item[i] = item[i].lower()

但是,如果我删除行计数器,并将其替换为文本文件中的行数。它完美地工作。

我怎样才能解决这个问题?

4

2 回答 2

3

听起来您想将输入文件的行转换为小写并将结果存储在数组中。你可以这样做:

with open('myfile.txt', 'r') as infile:
    items = [line.lower() for line in infile]

或者(在某种程度上)等效地,(这个在每一行的末尾删除“\n”):

with open('myfile.txt', 'r') as infile:
    items = infile.read().lower().splitlines()

注意:不要file用作变量名,因为它会掩盖内置file类型。

于 2012-11-18T23:53:16.553 回答
0

item = [0]*totallines将创建一个长度等于 的 0 列表totallines

如果您想将文件复制到列表中并访问给定的行(例如第六行),您可以这样做:

item = []
for line in infile:
    item.append(line)

print(item[5].lower())

或者,更简洁地说,使用文件对象的内置方法:

item = infile.readlines()
print(item[5].lower())
于 2012-11-18T23:56:12.783 回答