import json
with open('/home/sentry/Documents/mark.txt', 'r') as f1,open('/home/sentry/Downloads/axtscz-english-first-names/Male.json', 'r') as f2:
content = f1.read()
data = json.load(f2)
for p_id in data:
name = p_id.get('name')
if name in content: # This is where my problem is.
print('True')
else:
print(content)
print (name)
控制台将输出文本文件和 json 文件中的每个名称,尽管我想要的只是是或否的答案。 mark.txt 包含我的名字是 MARK THANK YOU。 抱歉,大写的,但 json 文件名都是大写的。
我尝试过用谷歌搜索一次打开两个文件,但作为一个新手,我很困惑为什么它不起作用。
给定您当前的
data
格式,我会将其从 json 列表重塑为 set()
或 dict()
。
鉴于:
data = [
{'name': 'JAMES', 'gender': 'M', 'culture': 'EN'},
{'name': 'MARK', 'gender': 'M', 'culture': 'EN'},
]
A
set()
看起来像:
data_lookup = set(row["name"] for row in data)
dict()
版本可能如下所示:
data_lookup = {row["name"]: row for row in data}
无论哪种情况,您都可以使用查找来回答其中是否有名称:
data = [
{'name': 'JAMES', 'gender': 'M', 'culture': 'EN'},
{'name': 'MARK', 'gender': 'M', 'culture': 'EN'},
]
data_lookup = set(row["name"] for row in data)
print("Yes" if "MARK" in data_lookup else "No")
print("Yes" if "JON" in data_lookup else "No")
结果:
Yes
No
如果您不关心与该名称相关的其余数据,请使用
set()
版本;如果您关心,请使用 dict()
版本。请注意,重复的名称会导致一些数据丢失,但如果您只想要“是/否”,那么这应该可以帮助您继续。