Я пытаюсь импортировать следующие данные в CSV:
{'test.foo.com': {'domain': 'foo.com','FQDN': 'test.foo.com', 'AS': 'AS1111', 'ressource_type': 'A', \
'nb_ip': '1', 'IP': '1.1.1.1', 'service': ['UNKNOWN'], 'port': '[443, 8443]'}}
Я почти успешно с этим кодом:
#!/bin/python3
## Import ##
# Offical
import csv
### Main ###
if __name__ == '__main__':
## Variables
csv_headers = ['domain', 'FQDN', 'AS', 'ressource_type', 'nb_ip', 'IP', 'service', 'port']
final_data = {'test.foo.com': {'domain': 'foo.com','FQDN': 'test.foo.com', 'AS': 'AS1111', 'ressource_type': 'A', \
'nb_ip': '1', 'IP': '1.1.1.1', 'service': ['UNKNOWN'], 'port': '[443, 8443]'}}
# Open the csv file in "write mode"
with open(file_name, mode='w') as file:
# Prepare the writer to add a dict into the csv file
csv_writer = csv.DictWriter(file, fieldnames=headers)
# Write the columns header into the csv file
csv_writer.writeheader()
# Write the dict into the file
for key, val in nest_dict.items():
row = {'FQDN': key}
row.update(val)
csv_writer.writerow(row)
Результат:
domain,FQDN,AS,ressource_type,nb_ip,IP,service,port
foo.com,test.foo.com,AS1111,A,1,1.1.1.1,['UNKNOWN'],"[443, 8443]"
Но я бы хотел:
domain,FQDN,AS,ressource_type,nb_ip,IP,service,port
foo.com,test.foo.com,AS1111,A,1,1.1.1.1,'UNKNOWN','443'
foo.com,test.foo.com,AS1111,A,1,1.1.1.1,'UNKNOWN','8443'
Видите разницу? У меня есть список «сервис» (здесь не требуется лечение) и список «порт». Если в столбце «порт» имеется более 1 порта, мне нужно напечатать новую строку для каждого порта в списке.
Я изо всех сил пытаюсь сделать это, потому что я не полностью понял этот код:
# Write the dict into the file
for key, val in nest_dict.items():
row = {'FQDN': key}
row.update(val)
csv_writer.writerow(row)
Не могли бы вы помочь мне с этим?
Спасибо!
С уважением,
Steackfrite