将json输出为csv
使用csv
代码
python
import csv
def save_contents(file_path, data_array):
with open(file_path, 'w', newline='', encoding='utf-8') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',', quotechar='\t', quoting=csv.QUOTE_ALL)
for i, data in enumerate(data_array):
if i == 0:
spamwriter.writerow(data.keys())
spamwriter.writerow(data.values())
print(f"[+] {len(data_array)+1} rows written on {file_path}")
json_data = [
{'name': 'person2', 'age': 20, 'card_id': '34878347838282', 'number': '84723948724287847', 'country': 'usa'},
{'name': 'person1', 'age': 35, 'card_id': '95864793980408', 'number': '68944837110437831', 'country': 'germany'}
]
save_contents("output.csv", json_data)
python
import csv
import re
def save_contents(file_path, data_array):
def is_match_bignum(value):
if isinstance(value, (int, float)):
return True
return isinstance(value, str) and re.match(r'^\d{1,}$', value)
with open(file_path, 'w', newline='', encoding='utf-8') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for i, data in enumerate(data_array):
if i == 0:
spamwriter.writerow(data.keys())
data_values = [f'\t{str(value)}\t' if is_match_bignum(value) else value for value in data.values()]
spamwriter.writerow(data_values)
print(f"[+] {len(data_array)+1} rows written on {file_path}")
json_data = [
{'name': 'person2', 'age': 20, 'card_id': '34878347838282', 'number': '84723948724287847', 'country': 'usa', 'fe': '84723948724287847'},
{'name': 'person1', 'age': 35, 'card_id': '95864793980408', 'number': '68944837110437831', 'country': 'germany', 'fe': '8472394872\n4287847'}
]
save_contents("output.csv", json_data)
使用pandas
代码
python
import pandas as pd
import csv
def save_contents(file_path, data_array):
pd.json_normalize(data_array).to_csv(file_path, index=False, quotechar='\t', quoting=csv.QUOTE_ALL, sep=',')
print(f"[+] {len(data_array)+1} rows written on {file_path}")
json_data = [
{'name': 'person2', 'age': 20, 'card_id': '34878347838282', 'number': '84723948724287847', 'country': 'usa'},
{'name': 'person1', 'age': 35, 'card_id': '95864793980408', 'number': '68944837110437831', 'country': 'germany'}
]
save_contents("output.csv", json_data)