【问题标题】:How to add a list with a list and integers into a csv?如何将带有列表和整数的列表添加到csv中?
【发布时间】:2021-12-22 12:43:57
【问题描述】:

我正在尝试将以下内容放入 csv 中。这是我的代码

import csv  

data = [[1, 2, 3], 4, 5]

with open('test.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(data)

我收到以下错误:

_csv.Error: iterable expected, not int

在编写 writer.writerow 时,代码可以工作,但会给出 [1, 2, 3], 4 和 5 作为列。

我希望列是 1、2、3、4、5

有什么帮助吗?

【问题讨论】:

  • 当然。不要在第一个索引中给它一个列表,而是展平你的列表。搜索“如何展平列表” - 应该提供几个点击。然后writer.writerows([[1,2,3,4,5]])(或writer.writerow([1,2,3,4,5])
  • 我尝试使用 reduce 并使用列表推导,但在两者中,它都说它不能连接 int 或 int 不可迭代

标签: python csv writer


【解决方案1】:

writerow 不等同于 writerows

>>> some_data = [[1,2,3],[4,5,6],[7,8,9]]
>>> writer.writerows(some_data)
>
1,2,3
4,5,6
7,8,9

>>> write.writerow(some_data)
>"[1, 2, 3]","[4, 5, 6]","[7, 8, 9]"

试试:

import csv

headers = [1,2,3,4,5]
some_data = ['Foo','Bar','Baz','Qux','Zoo']
more_data = [['d1','d2','d3'],['d4','d5','d6']]

with open('test.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(headers)     # Takes an iterable of cells
    writer.writerow(some_data)
    writer.writerows(more_data)  # Takes an iterable of iterables

你会得到:

1,2,3,4,5
Foo,Bar,Baz,Qux,Zoo
d1,d2,d3
d4,d5,d6

【讨论】:

    【解决方案2】:
    import csv  
    
    data = [[1, 2, 3,4], 5,6]
    
    print_data = []
    
    with open('test.csv', 'w') as f:
        writer = csv.writer(f)
        # Following code flattens the list within a list,
        # uses temporary 'print_data' to store values for printing to csv 
        for counter in range(len(data)):  
            if isinstance(data[counter], list)==1 :
                print ('list found')
                for val in data[counter]:
                    print_data.append(val)
            else:
                 print_data.append(data[counter])
    
        writer.writerow(print_data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2015-03-05
      • 2019-06-12
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多