使用.split python在文本文件中搜索关键词

时间:2016-05-19 12:10:04

标签: python file search text

我有一个鸡肉的文本文件,鸡肉的配方为1号线和牛肉,牛肉配方为2号线。

如果用户只输入牛肉或鸡肉,我可以搜索牛肉或鸡肉配方。但是如果用户输入“我想搜索牛肉食谱”或者鸡肉,我想搜索牛肉食谱....

我正在尝试使用.split,但并不完全在那里。以下是我的代码。

while True:
    food = input ("What food? ")
    file = open("meals.txt", "r")
        line = file.readline()
        data = line.split(",")
        if data[0] == food:
            print(data[1])
    file.close()

5 个答案:

答案 0 :(得分:0)

你会想要制作"食物"将项目放入列表中,并对其进行迭代。

food_type = food.split()
for type in food_type:
    if type == 'beef':
        #do something
    elif type == 'chicken':
        #do something else

答案 1 :(得分:0)

理想情况下,您应该使用elasticsearch。但是,如果你想进行字符串解析。

while True:
food = input ("What food? ")
food_tokens = food.split()
file = open("meals.txt", "r")
    line = file.readline()
    data = line.split(",")
    for food_token in food_tokens:
        if data[0] == food_token:
            print(data[1])
file.close()

这会检查单词" beef"和#34;鸡肉"如果输入包含它们,则打印出您想要的数据。

答案 2 :(得分:0)

首先,您需要某种有效搜索字词列表,在本例中为keywords = ['beef', 'chicken']。否则,如果有人要搜索鸡肉配方'你可能也会受到关注'配方的影响。在一个美味的牛肉配方'。然后,您会在用户输入中找到所有有效的关键字,然后将有效的关键字与膳食匹配:

keywords = ['beef', 'chicken']
userinput = input("what food? ")

# generate a list of meals
with open("meals.txt", "r") as file:
  meals = file.readlines()

for word in userinput.split():
  if word in keywords:
    for meal in meals:
      if word in meal:
        # yay found one, store it or something

答案 3 :(得分:0)

您可以使用正则表达式:

import re

foodType = re.search('(beef|chicken)', food)
if foodType is None:
    print 'beef or chicken, make your choice.'
else:
    print foodType.group(1) 
    """whatever you meant to do with beef or chicken instead.
       foodType.group(1) is 'chicken' or 'beef'
    """

如果foodType为None,则表示您的用户根本没有输入鸡肉或牛肉。否则,foodType.group(1)设置为鸡肉或牛肉,无论输入哪一个。我只是打印,但从那里你可以用它做任何你想做的事。

答案 4 :(得分:0)

file = open("txt", "r")
all_lines = file.readlines()

while True:
    food = raw_input ("What food? ")
    for line in all_lines:
        data = line.split(',')
        if data[0] == food:
            print "Found %s" % food
            print "data[1] is %s" % data[1]
            break
    else:
        print "Not found %s" % food