我必须以字符串的形式从用户那里获取输入,然后必须在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()
我已经应用了许多解决方案,但都没有。
答案 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'不同)。请参阅上面的编辑,在比较之前将所有字符串转换为小写。