python`csv`库。 writerows(['a','b'])将2行放入csv

时间:2018-11-26 22:28:50

标签: python python-3.x csv

我只是试图将单行放入csv文件中。

[a, b]

期望的CSV输出

[a]
[b]

实际CSV输出

DROP TABLE IF EXISTS Role CASCADE;
DROP TABLE IF EXISTS Users;

CREATE TABLE Role
         (RoleID          NUMERIC(1,0)     NOT NULL,
      RoleName        VARCHAR(25)     NOT NULL,
CONSTRAINT Role_PK PRIMARY KEY (RoleID));

CREATE TABLE Users
(UserID          NUMERIC(11,0)     NOT NULL,
 RoleID          NUMERIC(1,0),    
CONSTRAINT Users_PK PRIMARY KEY (UserID),
CONSTRAINT Users_FK1 FOREIGN KEY (RoleID)
 REFERENCES Role(RoleID));

2 个答案:

答案 0 :(得分:1)

writerows()将输入中的每个元素可迭代地写为新行

如果您要单行“ a,b”,请在列表中添加更多级别的嵌套:

with open("output.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows([['a', 'b']])

另外,如果您只想写一行,则可以按照TeeKea的建议进行操作,并使用writerow()

writerows(iterable)的基本功能是:

for item in iterable:
    writer.writerow(item)

答案 1 :(得分:0)

首先,如果您向['a', 'b']提供writerows,您将得到此错误:

  

_csv.Error:可迭代,不是整数

第二,如果以wb模式打开文件,则在向其写入列表时也会出现以下错误:

  

TypeError:需要一个类似字节的对象,而不是'str'

因此,要将列表['a', 'b']写入一个csv文件,您可能需要以w模式打开文件,并使用writerow而不是writerows,如下:

with open("output.csv", "w") as f:
    writer = csv.writer(f)
    writer.writerow(['a', 'b'])