python写入csv文件总是多出一行空行(windows)

问题代码

import csv
from os import path

full_path = path.abspath(__file__)
path_dir = path.dirname(full_path)

data = [
    ['Name', 'Age', 'City'],
    ['John', '25', 'New York'],
    ['Alice', '30', 'Los Angeles'],
    ['Bob', '35', 'Chicago']
]
# 代码使用都是正常的,但是总是多出一行空格
with open(path.join(path_dir, 'data.csv'), 'w', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerows(data)

输出结果
python写入csv文件总是多出一行空行(windows)_第1张图片

解决方案

import csv
from os import path

full_path = path.abspath(__file__)
path_dir = path.dirname(full_path)

data = [
    ['Name', 'Age', 'City'],
    ['John', '25', 'New York'],
    ['Alice', '30', 'Los Angeles'],
    ['Bob', '35', 'Chicago']
]
# TODO: 这里可以看到增加了newline='',完美解决多一行空格的问题
with open(path.join(path_dir, 'data.csv'), 'w', encoding='utf-8', newline='') as file:
    writer = csv.writer(file)
    # writer = csv.writer(file, lineterminator='\n') # 方案二
    writer.writerows(data)

解释说明
一、open() 时增加 newline=‘’ 参数;
在使用 open() 函数打开文件时,可以指定 newline 参数来控制换行符的处理方式。在指定 newline=‘’ 参数时,我们告诉 Python 在写入文件时不要进行换行符的转换。这样做的目的是为了避免在不同操作系统之间产生不一致的换行符处理,确保写入的换行符保持原样。

二、lineterminator 参数设置为 ‘\n’;
通过将 lineterminator 参数设置为 ‘\n’,确保每一行数据后只有一个换行符,而不会多出一个空行。

输出结果
python写入csv文件总是多出一行空行(windows)_第2张图片

你可能感兴趣的:(python,python,开发语言,csv,空行)