Python-在多个json文件中查找空白或none值



我有多个json文件,其结构如下:

[
{
"vertrags_id": 1,
"versicherungsnummer": "770442924",
"vp_nummer": 581,
},
{
"vertrags_id":,
"versicherungsnummer": "7353924",
"vp_number": 63,
},
{
"vertrags_id": ,
"versicherungsnummer": "45262924",
"vp_number": 56,
}
]

我需要遍历文件以知道在哪个文件中我有空白("(或没有值作为键"的值;vertrags_id";。然后我想把文件名附加到一个列表中。我最好知道在哪一行中发现了空白或没有值。

我尝试了以下代码:

lv = []
path = (r"C:...")
for file_name in [file for file in os.listdir(path) if file.endswith('.json')]:
with open(path + file_name) as data_file:
data = json.load(data_file)
if data['vertrags_id'] == "" or None:
lv.append(file_name)

但我收到以下错误消息:

File "c:UsersmallkOneDriveDesktopKoenigswegeProgrammingDellProgrammingpostgrestest_find_value_json.py", line 16, in <module>
if data['vertrags_id'] == "" or None:
TypeError: list indices must be integers or slices, not str

感谢任何提示。

,你可以做到这一点

for file_name in [file for file in os.listdir(path) if file.endswith('.json')]:
with open(path + file_name) as data_file:
data = json.load(data_file)
# this will check at least one value is empty or None
if not all([i['vertrags_id'] for i in data]):
lv.append(file_name)

data包含整个json文件。给定您指定的结构,它是一个list,因此您需要对其进行迭代

for file_name in [file for file in os.listdir(path) if file.endswith('.json')]:
with open(path + file_name) as data_file:
data = json.load(data_file)
# Close the file once we read the data
# Iterate over the records in data
for i, record in enumerate(data):
if (record['vertrags_id'] == "") or (record['vertrags_id'] is None):
lv.append("error in file {file_name}, at line {i}")

请注意,我正在使用enumerate来获取记录编号,然后您可以根据需要使用它。

根据你的数据判断,我认为你在处理来源时少了一个循环:

for d in data:
if d['vertrags_id'] in ["", None]:
lv.append(file_name)

此外,这里的or运算符并不像您想象的那样工作。与多个值进行比较时,请使用in

最新更新