我用 C# 编写了一个数据使用者,它从 python API 脚本读取字符串数据。到目前为止,我发现性能最好的方法是将数据放入 python 中的 numpy-recarray
,将其打印到控制台并使用 StreamReader 读取。
我在读取 C# 例程中得到以下字符串。这是一长串(7,000 条记录)股票报价(日期、开盘价、最高价、最低价、收盘价)。没有回车,没有换行。
[(datetime.date(2020, 6, 1), 29.80, 30.65, 29.45, 30.24), (datetime.date(2020, 6, 2), 30.49, 31.43, 30.19, 31.17)...]
我现在需要以某种方式将其解析为可轻松用于将此数据插入 SQL 数据库的内容。我知道如何从列表、数组等进行插入。我可以看到一个强力解析路由,它逐个字符地读取这个字符并将记录重建到一个列表中。那么SQL批量插入就很容易了。
我觉得可能有更好的方法来改变 python 控制台编写器,以一种可以使用 Linq 或其他一些赋值转换为 C# 中的列表的格式来编写这个长字符串。我对从哪里开始有点困惑。有什么建议吗?
最佳答案
你可能会对 pandas
生成的 csv
更满意:
只是粗略地给你一个元组列表:
In [25]: alist = [(datetime.date(2020, 6, 1), 29.80, 30.65, 29.45, 30.24), (date
...: time.date(2020, 6, 2), 30.49, 31.43, 30.19, 31.17)]
In [26]: alist
Out[26]:
[(datetime.date(2020, 6, 1), 29.8, 30.65, 29.45, 30.24),
(datetime.date(2020, 6, 2), 30.49, 31.43, 30.19, 31.17)]
In [28]: import pandas as pd
In [29]: df=pd.DataFrame(alist)
In [30]: df
Out[30]:
0 1 2 3 4
0 2020-06-01 29.80 30.65 29.45 30.24
1 2020-06-02 30.49 31.43 30.19 31.17
In [31]: df.to_csv('test.csv')
In [32]: cat test.csv
,0,1,2,3,4
0,2020-06-01,29.8,30.65,29.45,30.24
1,2020-06-02,30.49,31.43,30.19,31.17
您可以使用或不使用列标题和行索引来优化输出。
还有一个 numpy
savetxt
可以更有效地与这样的结构化数组一起使用。
https://stackoverflow.com/questions/62493970/