【问题标题】:Avoiding comma at the start of .CSV file in java在 java 中的 .CSV 文件开头避免逗号
【发布时间】:2016-04-20 04:31:33
【问题描述】:

我正在从网站上抓取数据并将其存储在 CSV 文件中。当数据进入 CSV 文件时,它会在每行的最后一个位置获得逗号。不知何故,我设法处理它。但是,现在我在创建另一列的每一行的开头都得到了逗号。以下是我的代码。

for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) {
                    if (it.hasNext()) {
                        sb.append("  \n  ");
                    }
                    for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) {
                        Element tdElement = it.next();
                        final String content = tdElement.text();

                        if (it2.hasNext()) {
                            sb.append("   ,   ");
                            sb.append(formatData(content));
                        }

                        if (!it2.hasNext()) {
                            String content1 = content.replaceAll(",$", " ");
                            sb.append(formatData(content1));
                            break;
                        } //to remove last placed Commas.

                    }

                    System.out.println(sb.toString());
                    sb.flush();
                    sb.close();

我想要的结果,例如:a,b,c,d,e
我得到的结果例如:,a,b,c,d,e

【问题讨论】:

    标签: java web web-scraping screen-scraping


    【解决方案1】:

    如果您使用 Java 8 进行开发,我建议您使用 StringJoiner。使用这个新类,您不必自己构建字符串。您可以找到使用 StringJoiner here 创建 CSV 的示例。

    希望对你有帮助。

    【讨论】:

    • 我将我的 java 版本更新为 8。但是,现在我遇到了新的错误,即我在 CSV 文件中只得到单行,而它应该带来更多行。我还没有使用 StringJoiner。
    • 您可以为每个 raw 定义一个 StringJoiner 并将它们输出到控制台上,就像在您的代码提取中一样。如果它回答了您的问题,请告诉我。
    【解决方案2】:
    StringBuffer sb = new StringBuffer(" ");
        for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) {
                        if (it.hasNext()) {
                            sb.deleteCharAt(sb.length() - 1);
                            sb.append("  \n  ");
                        }
                        for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) {
                            Element tdElement = it.next();
                            final String content = tdElement.text();
    
                            if (it2.hasNext()) {
                                sb.append(formatData(content));
                                sb.append(",");
    
                            }
    
                            if (!it2.hasNext()) {
                                String content1 = content.replaceAll(",$", " ");
                                sb.append(formatData(content1));
                                break;
                            } //to remove last placed Commas.
    
                        }
    
                        System.out.println(sb.toString());
                        sb.flush();
                        sb.close();
    
    
    }
    

    我正在尝试 remove 最后一个 character 在您的情况下是 , instance where it is trying to move to a new line 尝试用我的代码替换 并确保 instantiate stringbufferspace 作为字符串传递。

    【讨论】:

    • 不工作,在执行此操作后在最后一个位置开始获取逗号。
    • 再次进行了一些更改,顺便说一句,您可能需要查看stringJoiner,使用stringJoiner 会很容易
    • 我试过你的代码,但问题仍然存在。我正在尝试使用 stringJoiner,但它给出了一个错误。我猜它的发生是由于 java 版本,即 1.7。
    • 谢谢@priyamal,我的问题已经用这种技术解决了。我只是在第二个 if 语句中将 'it2' 替换为 'it'。
    猜你喜欢
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多