在Windows上,我发现了一种更改python
2&3的方式来更改csv
lineterminator选项(在Windows中以文本模式打开文件时,默认情况下
"rn"该选项
r太多)
import csvwith open("out.csv","w") as f: cr = csv.writer(f,delimiter=";",lineterminator="n") cr.writerow(["a","b","c"]) cr.writerow(["d","e","f"]) cr.writerow(["a","b","c"]) cr.writerow(["d","e","f"])无论使用什么python版本,都将创建一个没有臭名昭著的“空白行”的csv文件。
唯一的缺点是,在Linux上,此方法将生成
r-free文件,这可能不是标准文件(尽管文件仍然可以在excel中正确打开,没有空行,但仍然有几行:)
问题在3.6.2上仍然存在(就像我应该在一段时间前检查自己一样)
一种替代方法是使用字典作为参数:
write_args = {"mode":"wb"} if bytes is str else {"mode":"w","newline":""}(与相比
bytes,
str从python 3到python 2的许多区分方法之一,在python
3中类型有所不同,这与我们当前的问题BTW非常相关)。
现在,我们可以使用args解包传递这些参数:
with open("out.csv",**write_args) as f: cr = csv.writer(f,delimiter=";")


