簡體   English   中英

將 Python 字典列表值寫入單個 CSV 單元格?

[英]Write Python Dictionary List Value into single CSV Cell?

這可能很容易,但我不知道該怎么做。 這純粹是一個例子,但對於阿爾及利亞 - 我如何將“DZ”和“DB”寫入一行? 單元格值像列表一樣用括號括起來, ['DZ', 'DB']而不是DZ DB之類的東西

import csv

# csv header
fieldnames = ['name', 'area', 'country_code2', 'country_code3']

# csv data
rows = [
    {'name': 'Albania',
     'area': 28748,
     'country_code2': 'AL',
     'country_code3': 'ALB'},
    {'name': 'Algeria',
     'area': 2381741,
     'country_code2': ['DZ', 'DB'],
     'country_code3': 'DZA'},
    {'name': 'American Samoa',
     'area': 199,
     'country_code2': 'AS',
     'country_code3': 'ASM'}
]

with open('countries.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

將行列表轉換為分隔字符串。

for row in rows:
    if isinstance(row['country_code2'], list):
        row['country_code2'] = ' '.join(row['country_code2'])

您需要在將行保存到 CSV 之前對其進行預處理。

所以我們使用isinstance來檢查 country_code2 是列表還是字符串

import csv

# csv header
fieldnames = ['name', 'area', 'country_code2', 'country_code3']

# csv data
rows = [
    {'name': 'Albania',
     'area': 28748,
     'country_code2': 'AL',
     'country_code3': 'ALB'},
    {'name': 'Algeria',
     'area': 2381741,
     'country_code2': ['DZ', 'DB'],
     'country_code3': 'DZA'},
    {'name': 'American Samoa',
     'area': 199,
     'country_code2': 'AS',
     'country_code3': 'ASM'}
]

for row in rows:
    # check the country_code2 of every row if its and list
    if isinstance(row['country_code2'], list):
        # join the list to single string with ' ' seperating the values
        row['country_code2'] = ' '.join(row['country_code2'])

with open('countries.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM