簡體   English   中英

在.txt文件(JSON格式)中搜索特定字符串,然后打印特定密鑰

[英]Searching in a .txt file (JSON format) for a particular string and then printing a specific key

我必須從用戶那里獲取字符串形式的輸入,然后必須在JSON格式的.txt文件中進行搜索。 如果文本匹配,則必須執行X,否則必須執行Y。例如,如果用戶輸入“ mac”,則我的代碼應顯示包含搜索詞“ mac”的術語的完整名稱。

我的JSON文件當前包含Big Mac,當我搜索“ mac”時,它什么也沒有顯示,而必須顯示我(0 Big Mac)。 0是索引號,也是必需的。

  if option == 's':
        if 'name' in open('data.txt').read():
            sea = input ("Type a menu item name to search for: ")
            with open ('data.txt', 'r') as data_file:
                data = json.load(data_file)
            for line in data:
                if sea in line:
                    print (data[index]['name'])
                else:
                    print ('No such item exist')
        else:
            print ("The list is empty")
            main()

我已經應用了許多解決方案,但是都沒有用。

請參閱如何使用Python搜索字典值是否包含某些字符串

既然您知道要在針對'name'鍵存儲的值中查找字符串,則只需更改即可:

if sea in line

至:

if sea in line['name']

(或者if sea in line.get('name')if sea in line.get('name')則可能會導致您的詞典之一沒有“名稱”鍵的風險)。

但是,您嘗試使用index而未在任何地方進行設置。 如果您需要跟蹤列表中的位置,最好使用enumerate

for index, line in enumerate(data):
    if sea.lower() in line['name'].lower():
        print ((index, line['name']))

如果要使“ m”與“ Big Mac”匹配,則需要進行不區分大小寫的匹配(“ m”與“ M”不同)。 請參閱上面的編輯,在進行比較之前,它將所有字符串轉換為小寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM