[英]Python skips line when printing to CSV
我正在嘗試創建.csv文件。
由於某些原因,它會在打印條目之前跳過行。
這是輸出
但是這就是我所需要的
下面是代碼。 顯然, if line != "":
不起作用
import csv
#-----------------------------------
def csv_writer(data,path):
"""
Write data to a CSV file path
"""
with open(path, "w") as csv_file:
writer = csv.writer(csv_file, delimiter=',')
for line in data:
if line != "":
writer.writerow(line)
#-----------------------------------
if __name__ == "__main__":
data = ["first_name,last_name,city".split(","),
"Tyrese,Hirthe,Strackeport".split(","),
"Jules,Dicki,Lake Nickolasville".split(","),
"Dedric,Medhurst,Stiedemannberg".split(",")
]
path = "output.csv"
csv_writer(data,path)
某些python版本(在Windows上)在with open(path, "w") as csv_file:
。 插入了一個錯誤的回車符char ,在每行之后創建一個空行。
您必須按照文檔中所述添加newline=""
。 Python 3:
with open(path, "w",newline="") as csv_file:
writer = csv.writer(csv_file, delimiter=',')
至於python 2:
with open(path, "wb") as csv_file:
writer = csv.writer(csv_file, delimiter=',')
也可以看看:
(請注意,Windows上的最新Python版本不再需要此功能,但是文檔繼續說明這一點)
當您打開文件時,您需要傳遞帶有空白字符串的關鍵字參數newline。 這將防止在行之間添加換行符。 您的功能應為:
def csv_writer(data,path):
"""
Write data to a CSV file path
"""
with open(path, "w", newline = '') as csv_file:
writer = csv.writer(csv_file, delimiter=',')
for line in data:
if line != "":
writer.writerow(line)
請注意,這僅是Windows上的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.