首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式猜测CSV文件是逗号分隔还是分号分隔

如何以编程方式猜测CSV文件是逗号分隔还是分号分隔
EN

Stack Overflow用户
提问于 2010-05-07 23:28:42
回答 5查看 6.1K关注 0票数 13

在大多数情况下,CSV文件是以逗号分隔记录的文本文件。但是,有时这些文件会以分号分隔。(如果区域设置将小数分隔符设置为逗号,则Excel在保存CSV时将使用分号分隔符--这在欧洲很常见。参考:http://en.wikipedia.org/wiki/Comma-separated_values#Application_support)

我的问题是,让程序猜测是用逗号还是分号分隔的最好方法是什么?

例如,像1,1;1,1这样的行可能是不明确的。它可以解释为逗号分隔为:1 1;1 (字符串)1

或分号分隔为1,1,1,1

到目前为止,我最好的猜测是同时使用、和;分隔符解析文件,然后选择与第一行(通常是标题行)具有相同长度的最多行的解析。如果两者的行数相同,请选择列数较多的那个。这样做的主要缺点是额外的开销。

有什么想法?

EN

回答 5

Stack Overflow用户

发布于 2010-05-07 23:33:02

根据你正在使用的是什么,如果你保证有一个标题行,你尝试两者的方法,可能是最好的总体实践。然后,一旦您确定了发生了什么,如果您进一步到达没有所需列数的行,那么您就知道格式不正确。

通常,我会将其视为上传时用户指定的选项,而不是编程测试。

票数 1
EN

Stack Overflow用户

发布于 2010-08-04 03:54:58

如果每一行都应该有相同的列数,我相信这就是Excel的情况,那么,使用逗号和分号,计算出第N行和N+1行的列数。无论哪种方法(逗号或分号)产生不同的答案都是错误的(不是文件的格式)。你可以从头开始,直到其中一个被证明是不正确的。您不需要标题行或其他任何东西。您不必读取超过必要的文件,并且它永远不会为您提供文件格式的错误答案,它可能只是到达末尾而尚未得出结论。您所需要做的就是让每一行都有相同的列数属性。

票数 1
EN

Stack Overflow用户

发布于 2011-12-15 07:01:20

你可以读第一行

代码语言:javascript
复制
FileReader fileReader = new FileReader(filePath);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String s = bufferedReader.readLine();
    String substring = s.substring(s.indexOf(firstColumnName) + 3, s.indexOf(firstColumnName) + 4);
    bufferedReader.close();
    fileReader.close();
    substring.charAt(0);

然后捕获这个值

substring.charAt(0)

根据CSV是逗号还是分号,可以使用最后一个值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2789695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档