繁体   English   中英

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

[英]searching a text file for key words using .split python

我有一个文本文件,其中有鸡肉,鸡肉食谱作为第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()

您将需要将“食品”项放入列表,然后对其进行迭代。

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

理想情况下,您应该为此使用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”和“ chicken”,如果输入包含它们,则将打印所需的数据。

首先,您需要某种有效搜索词的列表,在这种情况下, 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

您可以使用正则表达式:

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)设置为鸡肉或牛肉,以任何一个输入为准。 我只是打印了一张照片,但您可以从那里随心所欲地打印。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM