簡體   English   中英

打印到CSV時Python跳過行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM