【问题标题】:how to give two or more than two values to a CSV cell in python如何在python中为CSV单元格提供两个或两个以上的值
【发布时间】:2018-02-08 04:36:37
【问题描述】:

我创建了一个 csv 文件并在文件中添加了标题,并且我还为标题提供了值。假设在下面编写的代码中,我如何为一个标头提供 2 个值。如果“column3”可以有两个值 3 和 4,并且在 CSV 文件中是否可以实际看到包含 2 个值的列,是否有可能?

Headers_of_csv = ["Column1","Column2","Column2"]
csv_writer = csv.DictWriter(mycsv,fieldnames=Headers_of_csv)
  csv_writer.writeheader()
  csv_writer.writerow({"Column1":1,"Column2":2,"Coulmn3":(3,4,5,6)})
                                            #is it possible to assign multiple values here 

CSV 表示:

        |Column1|   Column2|  Coulmn3|
Row1    |   1    |   2      |    3    |
        |        |          |    4    |
        |        |          |    5    |
        |        |          |    6    |
_ _ _ _ | _ _ _  |_ _ _ _ _ |_ _ _ _ _|_
Row2       X        X         X

是否可以为第 3 列分配 2 个值?

【问题讨论】:

  • 您的意思是您实际上想要第 3 列中的两个值(我不知道那是什么意思)还是只需要一个带有逗号的值?对于后者,您是否尝试仅传递一个字符串? {"Column1":1,"Column2":2,"Coulmn3":"3,4"}
  • 是的,我想在“column3”中有两个值。

标签: python python-3.x file-handling


【解决方案1】:

CSV 只是由分隔符(通常是逗号)分隔的文本。你只需要定义一个可以在同一个单元格中包含两个值的格式,例如

1,2,3::4

Python

csv_writer.writerow({
    "Column1": 1,
    "Column2": 2,
    "Column3": "%d::%d" % (3,4)
})

更新:

你也可以使用str.join

csv_writer.writerow({
    "Column1": "::".join(map(str, [1])),
    "Column2": "::".join(map(str, [2])),
    "Column3": "::".join(map(str, [3, 4]))
})

【讨论】:

  • 我的数据正在被计算并且它变化,我在一列中需要超过 2 个值,如果我在一列中需要 10 个值怎么办,在运行时计算该列的分配值跨度>
  • 你的答案解决了我一半的问题,但是“Column3”的值取决于我从不同文件中获取的数据。假设如果我想要第二行的“Column3”有 10 个值,我该怎么做?
  • 第 3 列的值是一个值列表,对吧? str.join(list) 不能解决你的问题吗?第 3 列中有多少值并不重要
  • "::".join(map(str, [1]))
  • "Total Tests":"::".join(str map(str,value[1])) 这是语法错误。应该是"Total Tests":"::".join(map(str, value[1]))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2019-10-08
  • 1970-01-01
相关资源
最近更新 更多