从csv文件读取记录头-java
我有一个csv文件,如下所示:从csv文件读取记录头-java,java,csv,Java,Csv,我有一个csv文件,如下所示: Field 1 field 2 field 3 TestData MARTIN,12/2/2/2:JOHN 12/2/2 2015/12/12 我想从字段2中提取姓名,例如Martin和John。我读入文件并按,拆分。这并不完全有效,因为字段2中包含逗号并将其拆分。是否有解决方法或从特定单元格提取数据的方法(例如,只需从文件中提供所有字段2) 通常,如果CSV上
Field 1 field 2 field 3
TestData MARTIN,12/2/2/2:JOHN 12/2/2 2015/12/12
我想从
字段2
中提取姓名,例如Martin
和John
。我读入文件并按,
拆分。这并不完全有效,因为字段2
中包含逗号并将其拆分。是否有解决方法或从特定单元格提取数据的方法(例如,只需从文件中提供所有字段2) 通常,如果CSV上的字段包含COMA,则需要对其进行引用。所以一条线应该是这样的:
TestData,“MARTIN,12/2/2/2:JOHN 12/2/2”,2015/12/12
您确定没有TSV(制表符分隔值)文件吗?在这种情况下,您可以执行拆分操作
String[] fields = line.split('\t')
String[] persons = split(1).split(',')
处理CSV文件的最佳方法是使用CSV库。我使用OpenCSV,但还有其他的。OpenCSV很好地处理转义逗号以及读取标题等。它还处理制表符分隔的文件。包含逗号的字段应在CSV中引用,包含引号的字段将通过另一个引号转义。例如:
"here's a comma, and some ""quoted text"" as well"
然而,CSV“格式”有点像噩梦
我不建议尝试编写自己的解析器。一开始看起来不像CSV文件。在CSV语法中,通常使用双引号(例如:
“John”、“1231.23”、“Male”
)对逗号进行转义。如果字段中存在未转义的逗号,则这不是CSV文件,而是TSV(制表符分隔值)格式。不过,仔细检查,“MARTIN,12/2/2:John 12/2/2”似乎也不太常见。你好像在马丁后面有个“,”和约翰后面有个“,”。因此,您可能需要使用String.indexOf
和String.substring