【问题标题】:how to remove the square brackets that csv.writer.writerow create如何删除 csv.writer.writerow 创建的方括号
【发布时间】:2021-03-11 13:44:10
【问题描述】:

我正在使用 csv.writer.writerow 编写多个参数:chromosome.weight_height, chromosome.weight_holes, chromosome.weight_bumpiness, chromosome.weight_line_clear 对于 csv 文件中的每一行,问题是写入正确的值但使用方括号,我不想要这个。 有没有办法去掉括号?

def write_generation_to_file(generation_number, population):
    with open(configuration.WEIGHTS_FILES_FOLDER + "generation_" + str(generation_number) + "_weights.csv", 'w',
              newline='') as file:
        for chromosome in population:
            writer = csv.writer(file)
            writer.writerow([chromosome.weight_height, chromosome.weight_holes, chromosome.weight_bumpiness,
                             chromosome.weight_line_clear])

编辑 1:

这些是我为函数提供的参数的一些示例。 据我所知 numpy.random.uniform 只返回一个元素。 例如,如果我尝试做chromosome.weight_height[0],它会抛出异常

weight_height = numpy.random.uniform(-2,2)
weight_holes = numpy.random.uniform(-2,2)
weight_bumpiness = numpy.random.uniform(-2,2)
weight_line_clear = numpy.random.uniform(-2,2)

【问题讨论】:

  • chromeosome.weight_heigt 是一个数组吗?然后尝试将其转换为 int
  • 不,所有参数都是浮动的
  • 您可以尝试在 csv.writer 中指定分隔符和引号字符吗?
  • 没有任何变化,因为分隔符和引号字符与默认值相同

标签: python python-3.x csv


【解决方案1】:

weight_heightweight_holes 等可能实际上是其中包含单个元素的列表。尝试在writerow 期间给出列表中的第一个元素,看看是否可以解决它。例如:

writer.writerow([chromosome.weight_height[0], chromosome.weight_holes[0], chromosome.weight_bumpiness[0], chromosome.weight_line_clear[0]])

这可能会也可能不会解决您的问题,因为我的回答是基于这些值是单个元素列表的假设。

【讨论】:

  • 正如我之前在评论中所说,参数都是浮动的。我将通过显示它的编辑来更新问题
  • @Fanto 嗯,这很奇怪。那时我不确定。在不相关的注释中,您可能应该将 writer = csv.writer(file) 移出 for 循环,因为没有理由在每次迭代时重新声明它。
  • 感谢您让我注意到它,直到现在才看到它!
猜你喜欢
  • 2019-12-24
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 2013-04-11
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多