ruby - Ruby to_f 不返回任何内容或 0.0
问题描述
使用字符串到浮点转换to_f
对我不起作用。
我正在尝试从经度和纬度数据中选择一列,如下所示。
"136.98355","35.130433333333336","2013-07-31T22:37:12+09:00","2346","13066","42","0","0","0"
"136.98363333333333","35.1306","2013-07-31T22:38:13+09:00","1311","13580","41","0","0","0"
"136.98361666666668","35.130583333333334","2013-07-31T22:39:13+09:00","3946","13580","41","0","0","0"
当我使用下面的代码简单地抓取该列时,它可以工作。
ruby -e "STDIN.readlines.each do |line| col = line.chomp.split(','); puts col[0] end" < new.csv > picked_nagoya.csv
结果:
"136.98355"
"136.98363333333333"
"136.98361666666668"
但是当我申请to_f
将字符串转换为浮点数时,文件picked_nagoya.csv
是空的。
我试图通过将转换后的字符串存储到变量中然后将其写入文件来解决它。但是,它随后返回 0.0s。
ruby -e "STDIN.readlines.each do |line| col = line.chomp.split(','); f = col[0].to_f; puts f end" < new.csv > picked_nagoya.csv
结果:
0.0
0.0
0.0
我在这里做错了什么?
解决方案
这是因为to_f
is 期望一个数字,但您尝试转换的字符串的第一个字符实际上是一个引号:"123.456"
在进行任何转换之前,您需要从字符串中删除引号:
f = col[0].delete_prefix('"').delete_suffix('"').to_f
推荐阅读
- go - 构建命令行参数:无法加载本地包:找不到提供包的模块
- python-2.7 - anaconda 未正确安装 python 2.7
- selenium-webdriver - 如何将 Botium Box 与 selenium 集成
- python - 从 Python 中的列表中递归地对相邻的元组进行分组
- excel - 条件四舍五入 If/then 语句 - Excel
- java - 还有其他方法可以在 Java 面板上输出网络视频流吗?
- c# - 创建具有属性的矩形列表
- shell - 无法删除最后一个字段 CSV 文件
- reactjs - Block 不是 blockNode 。如何解决与 npm semver 相关的问题?
- r - 在R中的highcharts条形图中排序堆叠