【问题标题】:How to write to csv file by column order?如何按列顺序写入csv文件?
【发布时间】:2022-01-24 22:31:39
【问题描述】:

我想将随机创建的值保存在由 3 列组成的 csv 文件的每一列中。

所以我要创建的数据集如下:

-Category-     -CorrectAnswer-   -AnswerTime-
Category 1           17               38
Category 8            8               20
   .                  .                .
   .                  .                .

我有一个函数可以在指定范围内生成随机浮点值:

def random_float(first, last):
    x = random.random()
    return round(random.uniform(first, last), 0)

我使用相同的函数来创建随机类别:

def random_category(first, last):
    x = random.random()
    return "Category " + str(round(random.uniform(first, last), 0))

这是写入第一列的函数:

def write_to_csv(file_name, column_header, rowNumber):
    columnNumber = 3
    with open(file_name, mode='w', newline = '') as f:
        writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
        writer.writerow(column_header)
        for i in range(rowNumber):
            row = [random_category(0,10) for j in range(1)]
            writer.writerow([random_category(0,10)])

column_header = ['Category', 'CorrectAnswer', 'AnswerTime']
rowNumber = 10
write_to_csv('test.csv', column_header, rowNumber)

结果是这样的: csv result

我可以在列中写入值,但我想同时写入不同的列。所以,我只想对column[0] 使用random_category() 函数,对column[1]column[2] 都使用random_float() 函数。

【问题讨论】:

    标签: python csv


    【解决方案1】:

    在您编写之前,您的行需要是 3 个项目的列表。

    我还想指出,你运行这个函数两次,row = 调用在原始代码中是完全多余的。

            for i in range(rowNumber):
                row = [random_category(0,10), random_float(0,10), random_float(0,10)]
                writer.writerow(row)
    

    可能是你想要的。

    还有:

    columnNumber = 3
    

    什么都不做,因为你从不参考它。

    【讨论】:

    • 感谢您的回答,问题已经解决了。
    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2015-11-23
    • 2019-09-02
    相关资源
    最近更新 更多