Golang を使用して GNSS RINEX ファイルを解析しようとしています。
たとえば、VERSION 行の RINEX 仕様は次のとおりです。
+--------------------+------------------------------------------+------------+
|RINEX VERSION / TYPE| - Format version (2.11) | F9.2,11X, |
| | - File type ('O' for Observation Data) | A1,19X, |
| | - Satellite System: blank or 'G': GPS | A1,19X |
| | 'R': GLONASS | |
| | 'S': Geostationary | |
| | signal payload | |
| | 'E': Galileo | |
| | 'M': Mixed | |
+--------------------+------------------------------------------+------------+
RINEX ファイルの各行は、80 ASCII 文字 + "\n" の固定幅です。この例では、最初の 9 文字がバージョン番号 (float) を表しています。
Python では、次を使用できます。
struct.unpack("9s11s1s19s1s19s20s", line)
これは、7 つの文字列を持つタプルを返します。
私は初めてで、フォーマットされたテキストを読むために fmt.Sscanf を使用しようとしています:
func main() {
str := " 2.11 OBSERVATION DATA G (GPS) RINEX VERSION / TYPE\n"
var value float32
a, err := fmt.Sscanf(str,"%9.2f", &value)
fmt.Println(a)
fmt.Println(err)
fmt.Println(value)
}
戻り値:
0
bad verb %. for float32
0
固定幅データの解析を許可するパッケージはありますか?
そうでない場合、Python の構造体に似たものを書くための良いアプローチは何でしょうか?