我尝试使用Dart从CSV文件中读取数据。我使用的代码从文件中读取行,并使用split()方法将它们拆分为列。其中一列包含字符串格式的数字数据,我需要将其转换为double。然而,当我尝试使用double.parse()方法解析字符串时,我得到FormatException:无效的双重错误。(字符串为“1.5”,应该正常工作)
map[columns[5]] = (map[columns[5]] ?? 0) + double.parse(columns[3]);
这是显示的错误:
Reading from file: .\\test.csv
Unhandled exception:
FormatException: Invalid double
"1.5"
#0 double.parse (dart:core-patch/double_patch.dart:112:28)
#1 main (...)
#2 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:33)
#3 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:192:26)
我已经尝试使用trim()方法在解析字符串之前从字符串中删除任何空格字符,但错误仍然存在。我还检查了CSV文件中的数据,并确认它被正确地格式化为十进制数。
3条答案
按热度按时间dzjeubhm1#
错误消息:
表示您正在对字符串
"1.5"
调用double.parse
,该字符串 * 包括双引号字符 *。您必须首先将它们去掉。有许多不同的方法可以做到这一点,例如:或者更好的方法是使用一个合适的CSV解析器,它应该为你处理不带引号的字段。注意,如果你的CSV文件包含带有嵌入逗号的字符串,天真地使用
String.split
可能会导致错误的结果。(我个人没有使用过它,但package:csv
可能是合适的。)q1qsirdb2#
你会像这样跟随
答案
j9per5c43#