我只是试图将单行放入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));
答案 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'])