在文本文档中搜索字符串

时间:2019-06-11 14:10:07

标签: python python-3.x

我是python的新手,想知道我的代码中缺少什么。

我想建立一个接收3个字母的机场目的地和出发地的类,并打印出该类是否在文本文件中

感谢您的帮助!

class departure:
    def __init__(self, destfrom, destto):
        self.destfrom = destfrom
        self.destto = destto

    def verdest(self,dest):
            flag = 0
            destinations = ["JFK","AMS"]
            for i in destinations:
                if i == dest:
                    flag = i
            return flag
if verdest() in open('airportlist.txt').read():
    print("true")

3 个答案:

答案 0 :(得分:0)

您需要进行一些更改。 if i == dest:正在检查JFK是否等于文件内容,您可能是说in。然后,您有了一个类,但从未对其进行初始化。

class departure:
  def __init__(self, destfrom, destto):
    self.destfrom = destfrom
    self.destto = destto

  def verdest(self,dest):
    flag = 0
    destinations = ["JFK","AMS"]
    for i in destinations:
      if i in dest: # change to in
        flag = i
    return flag
d = departure(['BWI'],['AMS'])
f = open('airportlist.txt','r')
flag = d.verdest(f.read()) #find last airport that was in file, could modify this to return list
if flag:
  print("true" + flag)
else:
  print('false')
f.close() #close the file

答案 1 :(得分:0)

read将文件的行读取为单个字符串。 如果使用readlines,则会在文件中获得行的列表。 然后,您可以查看这些行中是否有单独的代码。 没有课程,像这样:

def verdest(self, dest):
    flag = 0 # note - not used!
    destinations = open('airportlist.txt').readlines()
    return dest in destinations


if verdest("LGW"):
   print("true")

如果您要在班级中存储两个机场名称,然后再在文件中查找它们,请照此保存三个字母代码,但是将文件名内容传递给检查功能?

class departure:
    def __init__(self, destfrom, destto):
        self.destfrom = destfrom
        self.destto = destto

    def verdest(self, destinations):
        return self.destfrom in destinations and self.destto in destinations

然后创建一个类并使用它:

places = departure("JFK","AMS") 
    #This makes your class, and remembers the variables in member variables

if places.verdest(open('airportlist.txt').readlines()):
    #In this member function call, places remembers the member variable set up above
    print("true")

现在,您可以使用该类的__init__方法读取文件,而不是每次都要检查。

答案 2 :(得分:-1)

您在verdest()函数调用中缺少参数。