【发布时间】:2013-06-17 16:33:46
【问题描述】:
我有一个文本文件,其中包含一些我想读入的文本数据。 不幸的是,我找不到这样做的方法。
这是一个例子
5 4
1 2 - Yogurt
2 0 X Chicken soup
3 1 X Cheese
4 3 X Ham
2
3
4
0
文件由三部分组成。第一部分是标题(第一行),第二部分是记录列表,最后一部分是 unit64 值列表。
标头仅包含两个值,一个 uint64 后跟一个 unit16。第二个值是记录的数量,也是第三部分中的值的数量,因为这些数字是相同的。
一条记录是一个 unit64 值,后跟一个 uint16 值,后跟一个只能是 X 或 - 的单个字符,然后是一个 utf-8 编码的字符串,直到行尾。数据已通过 fmt.Fprintf() 写入文件。
第三部分包含 uint64 值。
我现在花了几个小时试图找出如何从文本文件中读取这些数据,但找不到方法。
如果 str 仅包含属于该数字的数字,我只能使用 strconv.ParseUint(str, 0, 64) 或 uint16(strconv.ParseUint(str, 0, 16))。 我查看了 bufio 以使用阅读器,但我最多只能得到几行。 我可能应该使用 bufio.Scanner 但我无法从文档中确定如何使用它。
【问题讨论】:
-
我找到了,但没有帮助。我最终使用了 fmt.Scanf(...)。要读取行尾字符串,我必须修剪字符串,因为 ReadString('\n') 返回一个前面有空格,结尾有 \n 的字符串。
标签: go