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,这是你的问题,所以你的电话。