Python-索引器有问题:列表索引超出范围
提前感谢您的回答。我花了几个小时试图研究我自己对这个问题的答案,但没有结果。我现在征求的是建议,也许不是答案,因为这是一个大学作业问题 我有一个程序,在单行记录中存储一组数据。这保存在名为“sales.txt”的文件中 有一个变量(customerIDInput)是从另一个函数引入的,它基本上就是客户ID 我的程序应该逐行搜索记录,查找索引0中包含“customerIDInput”的所有记录 我得到了一个错误,我认为这是循环的最后一次重复。索引超出范围。我最初认为这是最后一次(\n),因此根本没有任何索引。。。但是,我已经输入了一个rstrip(\n'),问题尚未解决 我意识到我是python新手,答案可能很简单,但我想我已经不知所措了,现在是时候问你们这里的智者了:) 附件是我遇到困难的功能Python-索引器有问题:列表索引超出范围,python,Python,提前感谢您的回答。我花了几个小时试图研究我自己对这个问题的答案,但没有结果。我现在征求的是建议,也许不是答案,因为这是一个大学作业问题 我有一个程序,在单行记录中存储一组数据。这保存在名为“sales.txt”的文件中 有一个变量(customerIDInput)是从另一个函数引入的,它基本上就是客户ID 我的程序应该逐行搜索记录,查找索引0中包含“customerIDInput”的所有记录 我得到了一个错误,我认为这是循环的最后一次重复。索引超出范围。我最初认为这是最后一次(\n),因此根本没
def searchFile ():
sales = open('sales.txt', 'r')
transaction = 'START'
while transaction != ' ':
transaction = sales.readline()
transactionStrip = transaction.rstrip('\n')
transaction_list = transactionStrip.split()
if transaction_list[0] == str(customerIDInput):
customerEntry = transaction_list
print('matching records are: ',customerEntry)
sales.close()
在实际尝试获取
事务列表[0]之前,您可以通过调用if transaction\u list:
(检查其中是否有任何项目)来检查是否存在这样的索引
为避免出现索引器
文件对象上的readline
方法将在到达文件末尾时返回空字符串。当您拆分空字符串时,将得到一个空列表,其中没有第一个元素。这就是为什么transaction\u list[0]
在文件末尾提供了一个索引器
有几种不同的方法可以解决此问题。靠近当前代码,您可以调整,而循环的条件,以查找事务
为空字符串(而不是带有单个空格的字符串),并读取前面的一行:
transaction = sales.readline() # read first line
while transaction != "":
# do stuff with non-empty transaction line
transaction = sales.readline() # read next line
但是,对文件中的行进行迭代的更自然的方法是直接在文件对象上使用for
循环:
for transaction in sales:
# do stuff
以这种方式迭代将在文件末尾自动停止。@Samane请不要只删除帖子中的问候语。是的,问候语需要删除,但您是否也可以寻求其他改进?