您可以添加到CSV中的“ sep =”元数据是什么?


24

在尝试查找如何在西班牙PC(属于客户)上的Excel中正确打开CSV时,我sep=,在文件顶部发现了许多建议使用的答案:

在它面前,这种方法的工作原理,但没有这些答案的给出任何进一步的信息,其中这个元数据选项从何而来。我试图搜索它的含义(并因此找到了所有答案),但一直无法获得任何进一步的信息,尤其是因为标点符号很难搜索。

我主要关心的是这是否是Excel特有的功能。我怀疑这是肯定的,但没有发现确定的确切证据。

一些相关的问题是:

  • 在此设置中可以使用哪些字符?
  • 还有哪些其他设置(例如,行终止符,引号字符等)。
  • 还有其他正式支持此功能的工具吗?

我希望有人可以指出我的地方,可以回答所有这些问题,甚至更多。我只是找不到。

一些澄清:

sep=不是一个解析器的参数。它应放置 CSV内。例:

sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"

4
是的,这是excel特有的
Raystafarian 2015年

2
你能得到任何东西吗?我为同样的问题感到困惑,但尚未找到描述此功能的任何MS规格。如果MS没有记录此功能,那么它到底是如何实现的?
childmenot 2015年

@toddlermenot可悲的不是。我得到的只是人们做出的断言,即它是Excel特有的,没有什么可以备份该断言,这令人失望。
Burhan Ali 2015年

Answers:


7

RFC 4180通常被认为是CSV格式的标准,并且未提及任何此类功能。

Web上的表格数据和元数据的 W3C 模型提到它是一项功能,不在其范围内:

许多“ CSV”文件嵌入元数据,例如在CSV文档标题行之前的行中。除了标题行中的列名之外,该规范未定义用于在CSV文件中嵌入元数据的任何格式。

因此,尽管我没有找到任何直接证据证明此功能是Excel特定的,但显然仍然如此,因为似乎没有涉及该功能的标准化文档。


良好的采购。我应该说的一件事是sep = | 将在Excel中使用的分隔符定义为竖线字符('|')。它没有被广泛使用,但不是Excel独有的。这是一个分隔符指令。Excel iirc的国际版本具有不同的字符,例如,运行excel的计算机上的欧洲语言使用分号。
var firstName

1
我知道它的用法(也许我的回答并不完全清楚)。我只是指出,似乎Excel引入了该功能,它基于任何种类的(公共)标准。
StefanKögl17年


-1

sep =指令在所有使用逗号作为十进制分隔符的国家(例如意大利)中使用。由于Excel在这些国家/地区使用分号而不是逗号来导出CSV,因此,如果您要确保可以在美国或其他国家/地区读取文件,则需要

sep =;

在文件顶部。这是Excel特定的,其他应用程序可能会忽略它。


-2

几乎所有可以从.csv文件导入的工具都认识到逗号不是唯一的分隔符,例如,很长一段时间以来,制表符就很常见。我认为这甚至可以追溯到打孔卡的时代,需要有一些字符被识别为数据字段的结尾-除了使用固定宽度字段或长度前缀字段的系统外,几乎每个系统都需要此字符自计算机问世以来。

这3个要素是字段分隔符,记录分隔符和数据结尾标记,csv 默认情况下分别使用逗号,换行符和文件结尾,但是几乎可以使用任何有效输入,但是您确实需要一种机制如果特殊标记出现在您的有效数据中,则用于转义特殊标记。

我遇到的一个历史系统使用换行符表示字段结尾,使用2空行表示记录*!*!* END *!*!*结尾和数据结尾。我经常遇到所有,\t|:用作字段分隔符的内容以及各种控制字符。

要警惕的是,法国人和其他人使用逗号作为小数点-这会引起各种娱乐和游戏。rfc4180中的 csv文件有一定程度的标准化,但是有时候从一个程序导出并导入到另一个程序时,您需要手动编辑文件。

例如,要回答问题的第二部分,Python包括一个csv/写器作为提供以下选项的标准库之一:

  • delimiter-这是字段分隔符(除非转义)。
  • doublequote-如果为true,则字段" 中的 a将表示为""
  • escapechar-从任何后续字符中删除任何特殊含义,例如,如果将其设置为,\则引用可以表示为\"
  • lineterminator-通常之一\n\r\r\n\n\r
  • quotechar-用于引用字符串的字符,通常为"'
  • quoting -标记为以下之一:
    • ALL -每个字段都用引号引起来,即: "1","Free Beer","ASAP"
    • MINIMAL -仅引用具有特殊字符的字段,即: 1,"Beer, (Free)", Now, Please
    • QUOTE_NONNUMERIC -引用不是数字的任何东西,即: 1,"Beer, (Free)", "Now", "Please"
    • NONE -不要引用转义符,即: 1,Beer\, (Free), Now, Please
  • skipinitialspace-跳过每个字段的前导空格,以便您可以使用, 而不是仅仅,用作字段分隔符。

通常,可以导入csv文件的工具越灵活且经过深思熟虑,就会拥有更多的这些选项(可能具有不同的名称和/或机制)。


2
这没有回答我的问题。它说明了什么是CSV,我已经知道了。我的问题是关于特定的语法。我可以在问题中添加一些背景来澄清问题吗?
Burhan Ali 2014年

1
谢谢,但这仍然无济于事。sep=不是解析器的参数。我已经对我的问题做了一些澄清。
Burhan Ali 2014年

1
@SteveBarnes但是,是否有任何工具(例如您提到的Python库)允许选项作为文件内容的一部分?我认为这就是问题的重点。
兰迪·奥里森

1
“因为它们是众多出色产品之一。” 吗 这就是我正在努力的一部分。我不想知道CSV是什么。我不想知道如何解析CSV。我想知道sep=它的来源。
Burhan Ali 2014年

2
sep =是Microsoft Excel特定的提示方法,我找不到的任何非Microsoft规范中都没有涉及。它来自Microsoft的一部分。
史蒂夫·巴恩斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.