如何从输入中搜索列表中的特定单词

时间:2016-02-04 07:37:38

标签: python

我必须创建一个程序,允许用户在一个句子中输入一种食物,例如我想要披萨或我想订购印度菜。然后必须拆分句子,然后程序可以搜索文本文件中的每个单词,如果它在文本文件中找到该单词,则应打印出食物。

    TypeFood = input("What food would you like to order?")
    words = TypeFood.split()
    with open("HungryHorseMenu.txt", "r") as f:
        for line in f:
                if words in line:
                    splitted_line = line.split(',')
                    print(splitted_line[0])

我收到此代码的错误,因为它说: 在'要求字符串作为左操作数,而不是列表

我的文字文件是:

  

意大利素食比萨饼

     

玛格丽塔披萨,意大利人

     

肉宴披萨,意大利

     

意粉肉酱,意大利面,意大利

     

Tagliatteli,意大利面,意大利

     

芝士汉堡,美国

     

鸡肉汉堡,美国人

     

Veggie汉堡,美国人

     

热狗,美国人

     

鸡肉咖喱,印度

     

蔬菜咖喱,印度

3 个答案:

答案 0 :(得分:1)

if any(word in line for word in words)

单词是一个列表,你必须迭代它以检查行中是否有任何单词。

答案 1 :(得分:0)

您遇到的问题是您尝试在此处搜索字符串列表:

for words in line

您现在有两种方式: a)@Sagar建议的方式(我将所有内容改为小写并添加了列表生成器构建)

if any((word.lower() in line.lower() for word in words))

b)检查所有单词是否在行中(但行也可以包含其他单词) if all((word.lower()中的word.lower()for words in words))

答案 2 :(得分:0)

我认为这会有用,你还应该考虑标点符号和区分大小写,这就是我使用正则表达式的原因。

class ViewController: UIViewController {
    var staticWindow: UIWindow!

    override func viewDidLoad() {
        super.viewDidLoad()
        showWindow()
    }

    func showWindow() {
        let frame = CGRect(x: 10, y: 10, width: 100, height: 100)
        let vc = MyViewController()
        let label = UILabel(frame: frame)
        label.text = "Hi there"
        vc.view.addSubview(label)
        staticWindow = UIWindow(frame: frame)
        staticWindow.rootViewController = MyViewController()
        staticWindow.windowLevel = UIWindowLevelAlert + 1;
        staticWindow.makeKeyAndVisible()
        staticWindow.rootViewController?.presentViewController(vc, animated: false, completion: nil)
    }
}

class MyViewController: UIViewController {
    override func shouldAutorotate() -> Bool {
        return false
    }

    override func shouldAutomaticallyForwardRotationMethods() -> Bool {
        return false
    }

    override func shouldAutomaticallyForwardAppearanceMethods() -> Bool {
        return false
    }

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return UIInterfaceOrientationMask.Portrait
    }
}