vi编辑器中的^ M字符

问题描述 投票:0回答:1

我是python的新手。我正在尝试附加CSV文件。

代码正在工作。但是当我执行vi test2.csv时,我在行尾看到一个^ M字符。

[当我在Unix框内做的猫或更少时,我看不到该字符。甚至CSV看起来也不错。

您能告诉我可能是什么问题。

使用open('test.csv','r')作为csvfile:csv_reader = csv.reader(csvfile)下一个(csv_reader)使用open('test2.csv','a')作为新文件:csv_writer = csv.writer(newfile)对于csv_reader中的行:csv_writer.writerow(line)

python csv append
1个回答
0
投票

CSV文件以(CR / LF)作为文件结尾,按标准:

https://en.wikipedia.org/wiki/Comma-separated_values

以(CR / LF)字符结尾的MS-DOS样式的行(对于最后一行)。

但是,您可以省略CR,并且大多数读者可以正常阅读此类文件。

vi是Linux中的纯测试编辑器,对于文本文件,它仅期望LF并显示那些CR。

[Hamza Abdaoui提供了很好的参考https://unix.stackexchange.com/questions/32001/what-is-m-and-how-do-i-get-rid-of-it/32003#32003

任何专用的CSV阅读器都会正确处理(CR / LF)。例如,python csv模块执行此操作。因此,当您使用csv.reader进行读取时,会丢弃CR。但是,当用csv.writer保存时,它会强制(CR / LF)进入输出文件。

您可以使用lineterminator更改这种行为>

csv_writer = csv.writer(newfile, lineterminator='\n')
© www.soinside.com 2019 - 2024. All rights reserved.