import json import csv # 读取 detail_birth.json 文件 def read_json(file_path): try: with open(file_path, 'r', encoding='utf-8') as f: return json.load(f) except FileNotFoundError: print(f"文件 {file_path} 未找到.") return [] except json.JSONDecodeError: print(f"文件 {file_path} 解析错误.") return [] # 写入 CSV 文件 def write_to_csv(data, output_file): with open(output_file, 'w', newline='', encoding='utf-8') as f: writer = csv.DictWriter(f, fieldnames=[ 'person', 'href', 'performer_aka', 'birthday', 'astrology', 'birthplace', 'gender', 'years_active', 'ethnicity', 'nationality', 'hair_colors', 'eye_color', 'height', 'weight', 'measurements', 'tattoos', 'piercings' ]) writer.writeheader() for entry in data: # 确保 performer_aka 始终为列表类型 performer_aka = entry.get('performer_aka', []) # 如果是 None 或非列表类型,转换为一个空列表 if performer_aka is None: performer_aka = [] elif not isinstance(performer_aka, list): performer_aka = [performer_aka] # 写入每一行 writer.writerow({ 'person': entry.get('person', ''), 'href': entry.get('href', ''), 'performer_aka': performer_aka, 'birthday': entry.get('birthday', ''), 'astrology': entry.get('astrology', ''), 'birthplace': entry.get('birthplace', ''), 'gender': entry.get('gender', ''), 'years_active': entry.get('years_active', ''), 'ethnicity': entry.get('ethnicity', ''), 'nationality': entry.get('nationality', ''), 'hair_colors': entry.get('hair_colors', ''), 'eye_color': entry.get('eye_color', ''), 'height': entry.get('height', ''), 'weight': entry.get('weight', ''), 'measurements': entry.get('measurements', ''), 'tattoos': entry.get('tattoos', ''), 'piercings': entry.get('piercings', '') }) # 主函数,执行转化操作 def main(): # 输入的 JSON 文件路径 input_json_file = 'detail_birth.json' # 输出的 CSV 文件路径 output_csv_file = 'detail_birth.csv' # 读取 JSON 文件 data = read_json(input_json_file) # 将数据写入 CSV 文件 write_to_csv(data, output_csv_file) print(f"数据已保存到 {output_csv_file}") if __name__ == "__main__": main()