python 读取文本文件内容转化为python的list_将文本文件转换为list,然后读取list以确定条目是否在lis中...

逐行分解:def accountReader():

while True:

chargeInput = (raw_input ("Enter a charge account to be validated: "))

if chargeInput == '':

break

sys.exit

好吧,到目前为止还不错。您已经创建了一个循环,该循环反复请求用户输入,当用户什么都不输入时会中断。在

^{pr2}$

这就是你开始遇到问题的地方。readline从chargeAccount读取一行并将其存储在line中。这意味着你只能测试一行!在while line != '':

if chargeInput == line:

print chargeInput, 'was found in list.'

这进一步加剧了你的问题。如果chargeInput == line,那么这将打印一条消息,然后循环重复。由于循环中没有什么可以中断的,这将导致一个无限循环,不断测试文件中的一行。另外,由于文件中的每一行都以新行(\n)结尾,chargeInput == line将始终生成false(感谢Steven Rumbalski提醒我这一点)。使用.strip()(如matchw的答案中所建议的),或者,如果您可以容忍部分匹配,那么可以使用Python的简单子字符串匹配功能:if chargeInput in line。在else:

print chargeInput, 'not found in list.'

break

chargeFile.close

在这里,正如sarnold所指出的,您错误地命名了您的文件;而且,它位于完全不同的代码块中,这意味着您反复打开chargeAccount文件,而没有关闭任何文件。在

正如你从matchw的帖子中看到的,有一种更简单的方法来做你想做的事情。但我认为你最好能找出如何用你选择的风格正确地编写这段代码。我给你一个提示:在最里面的while循环中应该有一个line = chargeAccount.readline()。你知道为什么吗?另外,当您成功找到匹配项时,您可能应该退出循环,而不是失败时。然后,您应该考虑一种方法,在最里面的循环完成后测试搜索是否成功。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值