当前位置: 首页 > 知识库问答 >
问题:

CSV-计数列数

宓昂雄
2023-03-14

开始时,我计算逗号数量,如:

stream.forEach(csvLine -> {
    int commaCounter = countMatches(csvLine, ",");
    if (commaCounter != FIELDS_IN_CSV - 1) {
        // Alert
    }

但是我发现(谢谢bug),逗号被撇号包围时是一个合法字符,比如“this is one,value”

我寻找了一个很短的方法来解决它,但没有找到任何东西(使用openCsv库,如果有帮助的话)。

当然,我可以迭代,将撇号*入队/出队到一个堆栈中,并计算单独的逗号。这里有一个短的方法吗?

  • 或增减撇号计数器值

共有1个答案

仇航
2023-03-14

一个简单的自己动手解决方案是:

int getFieldCount( String csvLine )
{
    char[] ch = csvLine.toCharArray();
    int len = ch.length, pos = 0, commaCounter = 0;
    while ( pos < len )
    {
        char c = ch[pos];
        if ( c == ',' ) commaCounter++;
        else if ( c == '"' )
        {
            pos++;
            while ( pos < len && ch[pos] != '"' ) pos++; // skip everything until the end of the string (or line)
        }
        pos++;
    }
    return commaCounter;
}

类似于上面的东西应该起作用;)

 类似资料:
  • 我试图计算每列CSV的总和。我能够读取csv在js使用readfile方法。我也能够循环使用它,并将数据解析成对象数组。现在我只是想出一种方法来把所有的列元素加起来,这就是我正在努力的地方。我的csv对象是对象格式的数组,看起来像这样。 CSV输入如下所示: 我想补充18 19 20最终答案应该是这样的[57,518]。 到目前为止,我已经完成了这些工作,我只需要帮助来改进这一点,并在JS中按列添

  • 我通常有更多面向代码的问题,但我需要有关CSV数据库的帮助。基本上,我需要将其格式更改为Fname;Lname;email.问题是我有13000行,所有数据都在1列中,分隔符是“;”。我使用了不同的CSV文件编辑器,他们都将数据放在1列中,所以我无法更改这些列的顺序...我无法从原始数据库中重新提取数据。那么有没有解决这个问题的方法,或者我被搞砸了? 所以我从一个CSV文件开始,它有“;”在每行的

  • 从2.7迁移后,我在Python 3环境中很难获得行数。几次尝试后,返回的行数为1。我如何绕过一个DeprecationWarning:'U'模式在python 3中被弃用? 在使用Python3的情况下,我尝试了以下方法,但我仍然坚持使用1。

  • 我的教授让我编写一个程序来读取. csv文件(778行(包括头行),8列)。我需要:1.编写一个方法来接收文件的名称作为其参数,然后打印文件中的行数。 公共无效printNumberOfLinesInFile(字符串文件名) public void printNumberOfPrivateNonPrivateCollegesInFile(字符串文件名) public void printMostE

  • 我正在处理一个csv文件,在此之前,我使用下面的代码获取行数。 代码是在这个链接中给出的帮助下编写的。但是,total_rows与csv文件中的实际行数不匹配。我已经找到了一个替代方案,但想知道为什么这是不正确的工作?? 在CSV文件中,有大量文本的单元格,我必须使用编码来避免读取CSV文件时出错。 感谢您的帮助!

  • 问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-