使用相同的nam打印多个数据库条目

2024-10-03 04:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,我不太清楚这个问题怎么表达。 我正在制作一个用于烹饪等的草药数据库,并使用python scrip搜索数据库

基本上,我在数据库中有多个条目具有相同或相似的名称(例如西伯利亚人参和人参)。我想打印出所有有名字的条目(如人参),但不确定如何打印

这是我目前的代码:

while True:

    herb=input("Herb: ")

    database=open("db.txt")

    for line in database:
        record = line.split('|')
        if record[0] == herb:
            found = True
            break
        else:
            found = False
            continue

    if found == False:
        print("No herbs in database.")
        print('')
    else:
        print(record[0]) 
        print(record[1]) 
        print(record[2]) 
        print(record[3])
        print('')

输出仅显示第一个包含草药(人参)的条目,但是我希望显示所有包含名称的条目。
如果这个问题已经被回答或者我的措辞不正确,我会道歉


Tags: in名称数据库trueifline条目record
1条回答
网友
1楼 · 发布于 2024-10-03 04:29:58

它看起来像是你在重复你的记录,当你找到一个匹配的条目时,你就会跳出循环并立即打印出来

您可能需要做的事情是制作一个printHerves函数,该函数接受记录数组并在找到它时打印它,而不是中断循环

此外,如果它们到达循环的末尾,则仅显示not found(未找到)。它可能看起来像这样:

herb=input("Herb: ")

database=open("db.txt")

def printHerbs(record):
    print(record[0]) 
    print(record[1]) 
    print(record[2]) 
    print(record[3])
    print('')

found = False;
for line in database:
    record = line.split('|')
    if herb.lower() in record[0].lower():
        found = True
        printHerbs(record)

if found == False:
    print("Herb not found in database")

此外,如果您试图匹配一个字符串是否是另一个字符串的子字符串,则可以使用:

if "Ginsing" in "Ginsing Tea":
    print("Found")

.lower()方法将确保在比较两个字符串时它们都是小写的

相关问题 更多 >