这是我的行
csv_output = csv.writer(f_output, delimiter=';', quoting=csv.QUOTE_NONE, escapechar=' ')
这是我的输出:
O;4;State[1,1,2]; ;
O;3;INFO; ;
我不想要空格。如何保存文件没有空格和双引号?
源文件(new_list):
['O', '3', 'INFO', '', '', ';', "']"]
['V', '4', 'FillLevel', "S7:[CPUA]DB1610', 'INT0', '64", '2002', 'CPUA.DB1610.0,I,64;RW', 'RW', '0', "0']"]
['O', '4', 'State[1,1,1]', '', '', ';', "']"]
['V', '5', 'Occupied', "S7:[CPUA]DB1610', 'X128.0", 'B', 'CPUA.DB1610.128,X0;RW', 'RW', '0', "0']"]
['V', '5', 'Locked', "S7:[CPUA]DB1610', 'X128.1", 'B', 'CPUA.DB1610.128,X1;RW', 'RW', '0', "0']"]
['V', '5', 'ErrDriveRoll', "S7:[CPUA]DB1610', 'X128.2", 'B', 'CPUA.DB1610.128,X2;RW', 'RW', '0', "0']"]
保存csv:
with open(source_file, "w", newline='') as f_output:
csv_output = csv.writer(f_output, delimiter=';', quoting=csv.QUOTE_NONE, escapechar=' ')
for r in range(len(new_list)):
csv_output.writerow(new_list[r][0:3] + new_list[r][5:6])
答案 0 :(得分:0)
我实际上认为这种情况正在发生,因为您在此escapechar=' '
电话中指定了csv.writer()
个参数:
csv_output = csv.writer(f_output, delimiter=';', quoting=csv.QUOTE_NONE, escapechar=' ')
The documentation for escapechar
说:
编写器用于转义分隔符的单字符字符串if 引用设置为QUOTE_NONE,如果是doublequote则设置为quotechar 假。在阅读时,escapechar从中删除任何特殊含义 跟随角色。它默认为None,禁用转义。
由于你已经使用了quoting=csv.QUOTE_NONE
,因此它在分号前面加上了你指定的空格。您在问题中粘贴的第三个列表在其第五个索引处有一个;
。
我仍然认为这不会完全解决您的问题,因为我无法判断您是否尝试从其数据结构为列表行的文件中读取。看起来您可能正在写入您的源文件,这可能会产生意想不到的后果。