2011-01-06 55 views
4

我需要解析它有这个头一个CSV文件:了解这个CSV头

Company;Registered office;Notifying party;Domicile or Registered office;Holdings of voting rights;;;;;;Publication 

;;;;directly held;;additionally counted;;total;;in Germany;;in foreign countries 

;;;;percentage;single rights;percentage;single rights;percentage;single rights;Official stock exchange 

我想知道这是否是一个标准的头格式,因为我预计将有所有字段后列出了一个另一方面,如(第一行)“投票权控股直接持有比例;控股投票权直接持有单一权利”,而我看到信息分散在三条线上。

目前我的文件有6行标题(显示三个和其他三种语言),我该如何检测,如果一天他们会添加更多的标题行? 该文件继续以下行(第一个数据),依此类推。实际数据的第一行并不总是相同

BBS Kraftfahrzeugtechnik AG;Schiltach;Baumgartner, Heinrich;Deutschland;62,5;;37,5;;100,0;;Börsenzeitung;04.04.2002 

我也在寻找它能够解析CSV文件 Java库。

回答

2

是的,你有一个合法的CSV文件。我通过Excel成功读取了它,并怀疑我对OpenOffice没有任何问题。对于Excel,我将它保存为一个.txt文件,但必须在开头的对话框中告诉Excel它已用分号分隔。

这是“标准”的意思,它是由分隔符分隔列(分号是好的,就像选项卡,当然是逗号)和行由新行。

你给这种格式的原因是因为第二个和第三个标题行不直接在第一行之下。 “投票权控股”跨越6栏。在它下面,在第二个标题行上,“直接持有”跨越2列,“附加计数”和“总计”也是如此。第三个标题行将第二个标题行分解为“百分比”和“单一权限”。

我不认为你会很容易地找到标题停止和数据开始的时间。这是一个语义问题 - 意义之一。不过,对于人来说更容易!

2

这不是一个CSV文件。您需要从正在生成它的人那里获取文件的规范。

CSV文件是逗号分隔值,每行一条记录。这是关于如何逃避逗号和转义字符的宽松规范。 Excel使用双引号围绕值,然后加倍双引号。

+0

记录每行一个......似乎只有头是很“奇怪”的 – cdarwin 2011-01-06 14:03:26

+0

CSV没有“头”仅排。行可以包含标题或数据或用于任何其他目的。 – 2011-01-06 14:08:09

+0

Openoffice允许我在打开文件时选择分隔符,也可以使用分号 – cdarwin 2011-01-06 14:08:12

1

没有标准标题格式。它可以被看作是一种约定,第一行是用逗号分隔的代表列标题的值列表。

在你的情况,你的表有三个标题行(我的猜测基于计数单元格,并与你的数据示例的内容进行比较)。

它仍然是csv,但您事先并不知道哪一行是保存实际数据的第一行。格式本身没有给出线索。

1

至于CSV头文件,没有标准格式。在所有情况下,我们都假设第一行是标题。如果标题跨越多行(我在这里第一次看到),那么在开始解析这个文件之前,你需要知道标题列的数量。至少这是一个开始。

csv文件中的下一个假设通常是一行是一行或一行记录。所以通常标题和数据由换行符分隔。在你的情况下,我不确定你是如何生成文件的,以及它计划如何使用。

3

我不同意别人谁主张,只有逗号是允许的。例如,Wikipedia给出了使用分号分隔CSV的德国CSV格式(因为逗号用于十进制分隔)。我认为MS Excel在使用分隔符时也非常灵活。这只是程序员的想法,试图吸引最简单的情况。

对于CSV解析,我推荐Ostermiller Utils

问>如何检测,如果一天他们会添加更多的标题行?
A>你不能。唯一可以依靠的是动态布局(您事先知道列名称的地方)或静态布局(您认为此列总是第n个)。

3

尽管CSV(Comma Seperated Value)文件的名称中包含逗号这个词,但我在企业界看到了一些非常奇怪的东西。

我会建议创建您自己的数据表示。这听起来像你可能阅读多个文件格式有点不同?

我会以模块化的方式解决问题。有不同格式的进口商,把它带到一个标准化的数据表示,而不是你想要的。

这是假设这些文件包含相同类型的数据,并且您无法控制接收的文件。

即使情况并非如此,从其表示中提取数据并将其粘贴到单独的项目中将会很有用。

我也建议使用OpenCSV