Python 获取计数器结果时的AttributeError,但不是普通整数

Python 获取计数器结果时的AttributeError,但不是普通整数,python,attributeerror,Python,Attributeerror,我试图使用下面的代码来获取文本文件中的总行数 totallines = 0 for line in infile: totallines += 1 它可以工作,并且可以在外壳上打印正确的数字。但是,当我将结果指定给: item = [0]*totallines 使用以下命令将给定行强制转换为小写时,我会得到AttributeError: item[i] = item[i].lower() 但是,如果我删除行计数器,并用文本文件中的行数替换它。它工作得很好 如何修复此问题?听起来您希

我试图使用下面的代码来获取文本文件中的总行数

totallines = 0
for line in infile:
    totallines += 1
它可以工作,并且可以在外壳上打印正确的数字。但是,当我将结果指定给:

item = [0]*totallines
使用以下命令将给定行强制转换为小写时,我会得到AttributeError:

item[i] = item[i].lower()
但是,如果我删除行计数器,并用文本文件中的行数替换它。它工作得很好


如何修复此问题?

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

with open('myfile.txt', 'r') as infile:
    items = [line.lower() for line in infile]
或者(某种程度上)等价地(这一行在每行末尾都会删除“\n”):


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

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

with open('myfile.txt', 'r') as infile:
    items = [line.lower() for line in infile]
或者(某种程度上)等价地(这一行在每行末尾都会删除“\n”):


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

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

如果要将文件复制到列表中并访问给定行(例如,第六行),请执行以下操作:

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

print(item[5].lower())
或者,更简洁地说,使用文件对象的内置方法:

item = infile.readlines()
print(item[5].lower())

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

如果要将文件复制到列表中并访问给定行(例如,第六行),请执行以下操作:

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

print(item[5].lower())
或者,更简洁地说,使用文件对象的内置方法:

item = infile.readlines()
print(item[5].lower())

如果
item=[0]*totalines
,那么
item=[0,0,…,0]
item[i]=0
,那么
0.lower()
应该是什么意思呢?item=[0]*24可以工作,这让我很困惑。好吧,你为什么不发布你的确切代码,
lower()
是一个字符串方法,只对字符串有效。因此
item
必须包含字符串而不是整数。如果
item=[0]*totalines
,那么
item=[0,0,…,0]
item[i]=0
,那么
0.lower()
应该是什么意思呢?item=[0]*24起作用,这让我很困惑。那么,你为什么不发布你的确切代码,
lower()
是一种字符串方法,仅适用于字符串。因此
必须包含字符串而不是整数。@乔尔·科内特:人们总是使用
文件
,因为它几乎不需要显式引用(所以通常隐藏它并不重要)。@martineau:有意义。我猜也是这样,我一直在使用
字符串
,因为我几乎从来没有导入
字符串
模块。布赖恩,这是你的问题,所以是你的决定。@Joel Cornett:人们一直在使用
文件
,因为它几乎不需要显式引用(所以通常隐藏它并不重要)。@martineau:有道理。我猜也是这样,我一直在使用
string
,因为我几乎从来没有导入
string
模块。Brian L,这是你的问题,所以你的电话。