gpt4 book ai didi

csv - 戈朗 : convert text dump to CSV

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:36 25 4
gpt4 key购买 nike

我有一个 txt 文件转储,其中包含以下行格式的数据:

2015/01/01-01:00:00, {'a50': 15.5, 'a95': 14.5, 'a99': 21.5}

我想提取值并将其转换为以下格式的 CSV:

2015/01/01, 15.5, 14.5, 21.5

到目前为止,我可以读取文件并提取数据,我还可以使用正则表达式获取时间戳值(但我知道 Go 中的正则表达式非常慢),我避免做更多的正则表达式来提取剩余的值。有什么指点吗?

最佳答案

如果时间允许,我可能会根据需要使用代码示例跟进此问题,但这里是我将如何处理该问题的基本纲要。

1) 创建一个类似下面的类型来保存您的数据;

type line struct {
A50 float64 `json:"a50"`
A95 float64 `json:"a95"`
A99 float64 `json:"a99"`
}

2)逐行读取输入

3) 对每一行使用 strings.Index 获取第一个逗号的索引

4) 将字符串的后半部分传递到 json.Unmarshal 中;

   err := json.Unmarshal([]byte(line[20:]), &MyInstance)

5) 像这样使用 Sprintf 将所需的输出写入磁盘或缓冲区;

  output := fmt.Sprintf("%s, %f, %f, %f\n", line[0:20], MyInstance.A50, MyInstance.A95, MyInstance.A99)

编辑:注意到一个小错误。您正在从日期时间中删除时间部分,您可以通过使用 strings.Index 并再次进行子 slice 或 - 上的 strings.Split 来获得它code> 分隔两个标记。

我应该指出的另一件事是我没有包含任何文件处理代码。您处理该问题的方式取决于您的需求。例如,如果它是少量数据,我可能会将所有输出保存在内存中,然后在最后将其写入磁盘,因为如果数据源很大,你将不得不以流方式完成所有这些工作(意味着每一行都独立于其他行进行处理)。

关于csv - 戈朗 : convert text dump to CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32959146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com