为了账号安全,请及时绑定邮箱和手机立即绑定

读取固定宽度和缺失值的表格数据

读取固定宽度和缺失值的表格数据

Go
慕丝7291255 2021-09-10 21:15:33
我试图在 Go 中从磁盘读取一个表,混合整数和浮点数,其中每个字段的宽度是固定的(每个字段占据固定数量的位置,如果太短则前面有空格)并且某些值可能是丢失(并且应该默认为零)。文件在这里:https : //celestrak.com/SpaceData/sw20100101.txt用于读取它的 Fortran 格式写在标题中:FORMAT(I4,I3,I3,I5,I3,8I3,I4,8I4,I4,F4.1,I2,I4,F6.1,I2,5F6.1)这些行看起来像这样(最后几行,有空格):2014 12 29 2475  2 20 30 23 33 37 47 33 47 270   7  15   9  18  22  39  18  39  21 1.1 5  64 127.1 0 150.4 156.0 131.4 153.3 160.92014 12 30 2475  3 30 40 37 20 30 27 27 23 233  15  27  22   7  15  12  12   9  15 0.8 4  66 126.0 0 150.3 156.1 130.3 152.7 161.02014 12 31 2475  4 13 23 13 17 20 33 13 17 150   5   9   5   6   7  18   5   6   8 0.4 2  65 129.2 0 150.5 156.3 133.6 152.4 161.32015 01 01 2475  5 20 10 10 10 10 20 20 30 130   7   4   4   4   4   7   7  15   6       101 138.0 0 150.7 156.6 142.7 152.1 161.72015 01 02 2475  6 30 10 20 20 30 20 30 40 200  15   4   7   7  15   7  15  27  12       113 146.0 0 150.9 157.0 151.0 152.2 162.12015 01 03 2475  7 50 30 30 30 30 20 20 10 220  48  15  15  15  15   7   7   4  15       122 149.0 0 151.0 157.2 154.1 152.4 162.4我一直在尝试与 Sscanf 一起使用的巧妙格式字符串(如“%4d%3d%3d%5d...”),但它不适用于空格,或者如果数字未与其插槽右对齐。我正在寻找一种像在 Fortran 中一样阅读它的方法,其中:混合字段类型(整数、浮点数、字符串)是可能的。每列都有固定的字符大小,如有必要,用空格填充插槽,但不同的列可能具有不同的大小。数值前面可以有零。值可能会丢失,在这种情况下,它会给出零值。值可以在插槽中的任何位置,不一定是右对齐的(不是示例,但可能是可能的)有没有一种聪明的方法来阅读这样的东西,还是我应该手动拆分、修剪、检查和转换每个字段?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信