代码之家  ›  专栏  ›  技术社区  ›  FabricioG

在python csv中为每列写一行。作家

  •  0
  • FabricioG  · 技术社区  · 3 年前

    我目前有一个包含以下列的csv:

    id, width, height, item_id, design
    

    我想附加到这个文件中,并创建一个新行来填充其中的每一列。当我试着用“这里测试”时,它会在每一行中放置t、e、s、t等。 我想把数据放在id、宽度、高度分隔符中,例如“新id”、“新宽度”等

    到目前为止,我的代码是:

    import csv
    
    with open('design_products_view.csv') as design_file, open('templates_view.csv') as templates, open('templates_view.csv', 'a') as templatesToWrite:
        designs = list(csv.reader(design_file, delimiter=','))
        template_files = list(csv.reader(templates, delimiter=','))
        containsProduct = "Circle"
        writer = csv.writer(templatesToWrite)
    
        for row in designs:
            if containsProduct in row[1]:
                rowValue = row[1].split("'")[0]
                for row in template_files:
                    if row[1] != "width":
                        if rowValue in row[1] and row[3] == "8":
                            print(row[1])
                            writer.writerow("test here")
    

    writerrow只接受一个参数。你知道我该怎么做吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Oliver Mohr Bonometti    3 年前

    这是因为 writerow 希望收到一个Iterable,比如 list .Python treats strings 作为一种 char ,所以如果你打字 "hello" ,它将作为 ['h', 'e', 'l', 'l', 'o'] .

    尝试使用 列表 writerow 功能:

    writer.writerow([5, 60, 55, 4, 'metallic'])