首页 > 解决方案 > Python:如何根据函数的参数创建 csv 列

问题描述

我有写入带有一组列的 csv 文件的函数。每当我想更改某些列时,我必须进入我的代码并手动更改它。我怎样才能输入列名作为参数,它会改变其余的?

我当前的代码:

def write_to_csv():
    data_writer = csv.DictWriter(open('output.csv', 'w', encoding='utf-8', newline=''), fieldnames=['fund', 'Ticker', 'Price, 'Date'])
    data_writer.writeheader()
    for row in input_file:
        data_writer.writerow({'fund': fund, 'Ticker': row[0].value, 'Price': row[1].value, 'Date': row[2].value)

因此,可以说,我不想将列更改TickerName手动,而是想在函数中使用一个参数,以便:如果我需要该列Ticker,我将执行write_to_csv(Ticker). 如果我需要 Name 而不是 ticker,我会执行write_to_csv(Name).

我认为我面临的问题是在引号中调用参数

标签: pythonpython-3.x

解决方案


它实际上比你想象的要简单。

def write_to_csv(column_variant='Ticker'): 
    # Use a with block so the file auto-closes
    with open('output.csv', 'w', encoding='utf-8', newline='') as csv_file:
        data_writer = csv.DictWriter(csv_file, fieldnames=['fund', column_variant, 'Price, 'Date'])     
        data_writer.writeheader() 
        for row in input_file:             
            data_writer.writerow({'fund': fund, column_variant: row[0].value, 'Price': row[1].value, 'Date': row[2].value)

推荐阅读