Csv 为什么\r在所有操作系统中的行为都像\n?

Csv 为什么\r在所有操作系统中的行为都像\n?,csv,formatting,Csv,Formatting,我注意到: 在Windows和Linux中,通过Python处理CSV文件时 我有以下代码: import csv list1 = [[1,'a'], [2,'b'], [3,'c']] with open('sample.csv', 'w') as wr: w = csv.writer(wr, lineterminator='\r') w.writerows(list1) 及 每次查看sample.csv文件时,都会得到相同的输出(在文本编辑器或Excel中): 我在我的Wi

我注意到:

在Windows和Linux中,通过Python处理CSV文件时

我有以下代码:

import csv
list1 = [[1,'a'], [2,'b'], [3,'c']]
with open('sample.csv', 'w') as wr:
    w = csv.writer(wr, lineterminator='\r')
    w.writerows(list1)

每次查看sample.csv文件时,都会得到相同的输出(在文本编辑器或Excel中):

我在我的Windows 7中的Wordpad、Ms Excel中查看了这个sample.csv文件

Gedit文本编辑器,我的Ubuntu 16中的libreoffice calc

我甚至在我的windows和Ubuntu中用python IDLE查看了该文件

我甚至还做了一件事

Hexdump:

  • 使用\r作为行终止符:
  • 使用\n作为行终止符时:
  • 在所有这些应用中,输出是相同的

    还有一件事,我做了hextump以确保这些应用程序中是否有其他内部工作,然后hextump将显示出来。但事实并非如此

    我的疑问是,为什么在所有这些应用程序中\r的行为都像\n? 为什么这些应用程序将\r\n识别为,或者这里发生了什么

    我甚至看过这个。但我没有得到答案

    编辑:

    但还有一件事是

    我有一个csv文件

    1,2,3
    "a","b","c\rd"
    
    当我在libreofficecalc中查看这个时,输出是
    . 为什么不在此处添加换行符???

    系统通常接受
    \n
    \r
    \r\n
    中的任何一种换行符,因为这些换行符在过去已被广泛使用,取消对它们的支持只会毫无理由地中断工作,所以我投票以重复的方式结束这个问题。这回答了你的问题吗@r3mainer请看我的编辑LibreOffice的行为并不是一个操作系统特有的问题。如果在带引号的字符串中需要换行符,请尝试
    \n
    。如果这不起作用,请尝试
    \r\n
    或者使用@r3mainer I included libreoffice中的一个来表示\r在字段中的行为与\n不同。但当它被指定为行结束时,它充当\n
    1,a
    2,b
    3,c
    
    $ hexdump -c sample.csv
    0000000   1   ,   a  \r   2   ,   b  \r   3   ,   c  \r
    000000c
    
    $ hexdump -c sample.csv
    0000000   1   ,   a  \n   2   ,   b  \n   3   ,   c  \n
    000000c
    
    1,2,3
    "a","b","c\rd"