我需要解析一个包含此标题的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库。
答案 0 :(得分:3)
我不同意其他声称只允许使用逗号的人。例如,Wikipedia给出了一个德语CSV的情况,它使用分号进行CSV分离(因为逗号用于小数分隔)。我认为MS Excel在使用分隔符方面也非常灵活。这只是程序员的想法,试图倾向于最简单的情况。
对于CSV解析,我建议Ostermiller Utils。
Q>我如何检测,如果有一天他们会添加更多标题行? A>你不能。您唯一可以依赖的是动态布局(事先知道列名称)或静态布局(假设此列始终为第n个)。
答案 1 :(得分:3)
尽管CSV(逗号分隔值)文件的名称中包含逗号,但我在企业界看到了一些非常奇怪的东西。
我建议您创建自己的数据表示。听起来你可能正在读取所有格式有点不同的多个文件?
我会以模块化方式解决问题。拥有不同格式的导入器,将其带入标准化的数据表示,而不是您想要的。
这都假设这些文件包含相同类型的数据,并且您无法控制所接收的文件。
即使不是这种情况,从它的表示中抽象出数据并将其粘贴在一个单独的项目中也是有用的。
我还建议使用OpenCSV
答案 2 :(得分:2)
这不是CSV文件。您需要从生成文件的任何人那里获取该文件的规范。
CSV文件是逗号分隔值,每行一条记录。关于如何转义逗号和转义字符,这是一个松散的规范。 Excel在值周围使用双引号,然后将双引号加倍。
答案 3 :(得分:2)
是的,您有一个合法的CSV文件。我通过Excel成功读取它,并怀疑我对OpenOffice没有任何问题。对于Excel,我将其保存为.txt文件,但后来必须在开始对话框中告诉Excel它是由分号分隔的。
这是“标准”,因为它是用分隔符分隔列(分号可以,标签,当然还有逗号)和新行的行。
您获得此格式的原因是因为第二行和第三行标题行不直接位于第一行之下。 “投票权持有”涵盖6列。在它下面,在第二个标题行上,“直接保持”跨越2列,“附加计数”和“总计”也是如此。第三个标题行将第二个标题行分解为“百分比”和“单一权限”。
我认为您不会轻易找到标头停止和数据开始的时间。这是一个语义问题 - 意义之一。但是对于人类来说更容易!
答案 4 :(得分:1)
没有标准的标题格式。可以看作是一种约定,第一行是以逗号分隔的值列表,表示列标题。
在您的情况下,您的表格有三个标题行(我的猜测基于计算单元格并与数据示例的内容进行比较)。
它仍然是csv,但您事先并不知道哪一行是保存实际数据的第一行。格式本身没有给出任何线索。
答案 5 :(得分:1)
对于CSV标题go,没有标准格式。在所有情况下,我们都假设第一行是标题。如果标题跨越多行(我在这里第一次看到),那么在开始解析此文件之前,您需要知道标题列的数量。至少是一个开始。
csv文件中的下一个假设通常是一行是一行或记录。因此通常标题和数据由换行符分隔。在您的情况下,我不确定您是如何生成文件的,以及如何使用它。
答案 6 :(得分:1)