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

时间:2016-10-23 08:41:50

标签: python json search

我必须以字符串的形式从用户那里获取输入,然后必须在JSON格式的.txt文件中搜索它。如果文本匹配,则必须以其他方式执行X.例如,如果用户输入“mac”,我的代码应显示包含搜索词“mac”的术语的完整名称。

我的JSON文件目前有巨无霸作为项目,当我搜索'mac'时它什么也没显示,而它必须显示我(0巨无霸)。 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()

我已经应用了许多解决方案,但都没有。

1 个答案:

答案 0 :(得分:0)

请参阅How to search if dictionary value contains certain string with Python

因为您知道您正在根据'名称'存储的值中查找字符串。关键,你可以改变:

if sea in line

为:

if sea in line['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'匹配“巨无霸”'那么你需要做一些不区分大小写的匹配(' m'与' M'不同)。请参阅上面的编辑,在比较之前将所有字符串转换为小写。