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

从CSV文件读取解析错误/问题

孔深
2023-03-14

您好,我在读取每行包含3列的csv文件时遇到问题。我似乎无法将最后一个单元格(3)解析为整数,即使它始终是一个“可解析”字符串:Berlin,Buenos Aires,7402我似乎无法得到7402编译器抛出的所有结果是:

“在java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)在java.base/java.lang.Integer.parseInt(Integer.java:658)在java.base/java.lang.Integer.parseInt(Integer.java:776)

这是我的代码:

Scanner scan = new Scanner("worldcities.csv");
        scan.useDelimiter("[,\\n]"); // get everything before a comma or a newline
        while(scan.hasNext()) { // while this file has something then we
            edge.v1 = scan.next(); // take vertice1 ----> city 1
            edge.v2 = scan.next(); //take vertice2 ----> city 2
            edge.e = Integer.parseInt(scan.next()); // parse the third value as int(distance between city1 and city2)
            minheap.add(edge);
        }
        scan.close();

我似乎能够在调试器中获得前2个值。

控制台只显示”

共有1个答案

陆和泰
2023-03-14

您可以使用nextLine()方法遍历所有文件行,如下例所示:

Scanner scanner = new Scanner(new File("worldcities.csv"));
while (scanner.hasNextLine()) {
    String columns[] = scanner.nextLine().split(",");
    edge.v1 = columns[0]; // take vertice1 ----> city 1
    edge.v2 = columns[1]; //take vertice2 ----> city 2
    edge.e = Integer.parseInt(columns[2]); // parse the third value as int(distance between city1 and city2)
    minheap.add(edge);
}
scanner.close();

或者在不使用扫描仪的情况下使用文件类:

List<String> rows = Files.readAllLines(Paths.get("worldcities.csv"));
for (String row : rows) {
    String columns[] = row.split(",");
    edge.v1 = columns[0]; // take vertice1 ----> city 1
    edge.v2 = columns[1]; //take vertice2 ----> city 2
    edge.e = Integer.parseInt(columns[2]); // parse the third value as int(distance between city1 and city2)
    minheap.add(edge);
}

您还可以使用一个特殊的库来处理CVS文件,例如查看Apache Commons CSV库。

 类似资料:
  • 当我试图在Python中打印CSV文件的内容时,我得到了这个错误。 回溯(最近调用最后):文件“/users/cassandracampbell/library/preferences/pycharmce2018.2/scratches/player.py”,第5行,在打开('player.csv')的csvfile:filenotfounderror:[errno2]中没有这样的文件或目录:'p

  • 我使用Jmeter和Selenium Webdriver采样器 代码CSV配置 我的问题是它没有从CSV中挑选。以上两行生成结果“loginName”,而不是从文件中选择实际的登录名。我用过单引号、双引号等,但运气不佳。使用${loginName}会产生错误。知道什么地方出了问题,如何解决吗?

  • 我是R的新手,想读一个csv文件。但是当我试图阅读它时,我遇到了错误。我的csv文件如下: 当我在RStudio中使用此命令时,我得到了错误:命令: 错误: 读取时出错。表(file=file,header=header,sep=sep,quote=quote,:不允许重复的“row.names” 我还尝试删除错误并使用此命令: 但是当我查看输出时,它不能保持方阵的结构。你能帮我做什么吗?

  • 我有一个csv文件,有几百行和13列。csv文件的结构如下(示例): 一个标题的值显示在另一个标题下。因此,当我使用read_csv时,我得到ParserError:Error标记化数据。C错误:第27458行预期有12个字段,saw 13。 关于如何清理/重新排列csv文件并将正确的列值放在正确的列下,有什么建议吗?可能创建一个新的csv或将其输入数据库。谢谢

  • 我是Python新手,一直在关注我在网上找到的关于解决中国邮递员问题的教程。 我上传了所需的CSV文件,但每当我试图定义用于打印的节点位置数据结构时,它总是说“KeyError:'X”“”,这是我的CSV文件的标题之一 一位朋友告诉我,可能的问题是CSV文件中有空格,但我不确定如何解决这个问题。 我试过使用在线教程中的文件,效果很好,所以我不确定我做错了什么。 是打印(df)运行时得到的输出类型

  • 本文向大家介绍解决pandas中读取中文名称的csv文件报错的问题,包括了解决pandas中读取中文名称的csv文件报错的问题的使用技巧和注意事项,需要的朋友参考一下 之前在使用Pandas处理csv文件时,发现如果文件名为中文,则会报错: 后来在一位博主的博客中解释了是read_csv中engine参数的问题,默认是C engine,在读取中文标题时有可能会出错(在我这是必现),解决方法是将en