^m 字符在 vi 编辑器中



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

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

当我在Unix框中catless时,我看不到该字符。甚至CSV看起来还可以。

您能否告知可能出现的问题。

with open('test.csv','r') as csvfile:
csv_reader = csv.reader(csvfile)
next(csv_reader)
with open('test2.csv','a') as newfile:
csv_writer = csv.writer(newfile)
for line in csv_reader:
csv_writer.writerow(line)

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')

最新更新