gpt4 book ai didi

Python CSV 插入最后换行符 - 我怎样才能避免它?

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:59 26 4
gpt4 key购买 nike

假设我创建了一个包含两行的 csv:

>>> import csv
>>> csvfile = csv.writer(open('test.csv', 'w'))
>>> csvfile.writerow(['row'])
5
>>> csvfile.writerow(['row2'])
6

阅读时,我得到了最后一行新内容:

>>> open('test.csv').read()
'row\nrow2\n'

当然,这是可以预料到的,但就我而言,我宁愿不使用它,因为它更容易解释:进行拆分时无需检查空行。

>>> open('test.csv').read().split('\n')
['row', 'row2', '']

最佳答案

作为解决方法,您可以使用 StringIO() 要写入的对象。输出可能为 rstrip()在写入文件之前应用于它:

from io import StringIO        
import csv

output = StringIO(newline='')
csvfile = csv.writer(output)

csvfile.writerow(['row'])
csvfile.writerow(['row2'])

with open('test.csv', 'w', newline='') as f_output:
f_output.write(output.getvalue().rstrip())

这样做的好处是保留 CSV 库的全部功能。但我建议您保留尾随换行符。

<小时/>

对于迭代方法:

from io import StringIO        
import csv

data = [['row'], ['row2']]

with open('test.csv', 'w', newline='') as f_output:
iter_data = iter(data)
next_row = next(iter_data)
csv_writer = csv.writer(f_output)

for row in iter_data:
csv_writer.writerow(next_row)
next_row = row

# Write the last row to a string to remove trailing newline
last_row = StringIO(newline='')
csv.writer(last_row).writerow(next_row)
f_output.write(last_row.getvalue().rstrip())

这一次写入一行数据,然后使用 StringIO() 处理最后一行。删除尾随换行符的方法。

关于Python CSV 插入最后换行符 - 我怎样才能避免它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com