我对这个Python“文件”的东西很新。这是从名为“CabDetails.txt”的文件中检索数据的代码,该文件包含一些表格数据,例如租车的可用性及其ID。我能够运行程序没有错误,但我没有得到任何输出。哦顺便说一句,输入是由用户给出的。我觉得我在for循环中搞砸了,或者我只是弄乱了整个事情。非常感谢您的帮助。谢谢。 (NOOB SPOTTED,请多余和帮助:P)。
try:
Details=input("enter details of cab you are looking for:")
for line in Details:
open('CabDetails.txt','r').readlines()
if Details in line:
print (line)
except IOError:
print("Error:can\'t find file or read data")
答案 0 :(得分:0)
您的代码有一些错误。首先,你循环输入的每个字符,第二个是你没有读取文件,你没有分配给变量,第三个是if语句上的坏缩进。
try:
details=input("enter details of cab you are looking for:")
for line in open('CabDetails.txt','r').readlines():
if details in line:
print (line)
except IOError:
print("Error:can\'t find file or read data")
这样的事情应该有效。
答案 1 :(得分:0)
您的代码有两个主要问题:
1)您打开文件并阅读每个"行"的所有行。你在Details
找到,但我想你想要做的是阅读文件的所有行,然后搜索包含Details
中每个元素的行。你甚至没有关闭你打开的文件
2)您实际上是在Details
中搜索每个元素,但是,如果Details
是一个字符串,那么您实际上正在遍历每个字母。
例如,如果Details = "det1,DET2,Det3"
您将搜索包含每个字母的所有行
为了解决您的第一个问题,我们将阅读您文件的所有行并将其存储在名为MyFileRows的列表中:
with open('CabDetails.txt','r') as f:
MyFileRows = f.readlines()
通过这种方式,with
语句会自动关闭您的文件,并且您有列表。
对于您的第二个问题,首先您需要将逗号出现的Details
分开(假设您的输入类似于det1, det2, det3
)并将此值存储在名为MyDetails的列表中:
MyDetails = Details.strip().split(',') # this variable will look like: ['det1', 'det2', 'det3']
最后你检查哪些行至少包含你的一个细节:
for line in MyFileRows:
if any([detail in line for detail in MyDetails]):
print line
注意:在第二行,我们在这里使用list comprehension
您的最终代码应如下所示:
try:
with open('CabDetails.txt','r') as f:
MyFileRows = f.readlines()
except IOError:
print("Error:can\'t find file or read data")
Details=input("enter details of cab you are looking for:")
MyDetails = Details.strip().split(',')
for line in MyFileRows:
if any([detail in line for detail in MyDetails]):
print line