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

发布时间:2024年01月02日

问题代码

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)

输出结果
在这里插入图片描述

解决方案

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’,确保每一行数据后只有一个换行符,而不会多出一个空行。

输出结果
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_33191599/article/details/135333427
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。