我有两个文件,一个包含名称的文本文件和一个包含名称数据集的 j son 文件。我正在尝试验证文本文件中是否有名称

问题描述 投票:0回答:1
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 文件名都是大写的。

我尝试过用谷歌搜索一次打开两个文件,但作为一个新手,我很困惑为什么它不起作用。

python json file-io dataset
1个回答
0
投票

给定您当前的

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()
版本。请注意,重复的名称会导致一些数据丢失,但如果您只想要“是/否”,那么这应该可以帮助您继续。

© www.soinside.com 2019 - 2024. All rights reserved.