【大麦小米学量化】将list写入csv并读取还原为list(自选股操作)

2023-12-16 11:12

本文主要是介绍【大麦小米学量化】将list写入csv并读取还原为list(自选股操作),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、将list写入csv并读取还原为list(含源代码)
  • 二、进阶应用(自选股信息交换)
  • 总结


前言

有时候我们需要将list写入本地文件,作为交换信息由其它程序进行读取。就比如,做量化交易的时候,一个程序进行选股,一个程序读取选股信息后进行交易。当然也可以写入redis等,方法很多。但写入本地csv文件最简单,毕竟自选股的结果就是一个list就够了。

下面进入正文。

一、将list写入csv并读取还原为list(含源代码)

在网上找了好些个方法,最终修改为如下代码,这里做个分享,方便后来人。
这里踩的坑主要有:
1、list可以写入csv,但是每一个元素的字符都被逗号分割后存储,还原出来很麻烦;
2、list的每个元素写入csv后,都会有一个空行,在还原的时候多出来一个空的元素;

经过修改和完善,目前已经可以完全实现list写入csv并原样还原。为方便调用,将其包装为两个函数。具体代码如下:

import csvdef list2csv(data,filename='output.csv'):# 打开或创建CSV文件并指定写入模式, newline=''则不生成空行with open(filename, mode='w', newline='') as file:# 初始化CSV writer对象writer = csv.writer(file)# 遍历数据列表,逐行写入到CSV文件中for item in data:writer.writerows([item])print("已成功将列表写入CSV文件!")def csv2list(filename):ret_list = []# 打开CSV文件进行读取操作with open(filename) as f:f_reader = csv.reader(f)#循环文件中的每一行for row in f_reader:# print(row)ret_list.append(''.join(row)) print("成功从CSV文件中读取数据并转换为列表形式。")return ret_listif __name__ == "__main__": data = ['300750','300150','600450','601068.SH']list2csv(data)ret = csv2list(filename='output.csv')print(ret)
已成功将列表写入CSV文件!
成功从CSV文件中读取数据并转换为列表形式。
['300750', '300150', '600450', '601068.SH']
请按任意键继续. . .

二、进阶应用(自选股信息交换)

比如我们通过pywencai完成选股(【大麦小米学量化】通过pywencai访问同花顺问财接口实现智能选股),并将股票代码写入一个固定路径和文件名的csv文件,后边再进行读取还原。具体代码如下:

if __name__ == "__main__": import pywencaiquery_str = '非停盘;非ST;连涨3天涨幅1%-4%;均线多头排列;无长上影线'# 根据需要自行修改,此处仅做演示,不做交易参考。df = pywencai.get(query=query_str, sort_key='股票代码', sort_order='asc', perpage=10 )print(df)code_list = df['股票代码'].values.tolist()print(code_list)list2csv(code_list,filename='mystock.csv')mystock = csv2list(filename='mystock.csv')print(mystock)

运行结果如下:可以看到还原成list与原始信息一模一样。

        股票代码  股票简称    最新价 交易状态[20231215]  ... 最低价:前复权[20231215] 收盘价:前复权[20231213] market_code    code
0  000782.SZ  美达股份   5.83             交易  ...              5.74              5.65          33  000782
1  831304.BJ  迪尔化工   7.19             交易  ...              6.74              6.46         151  831304
2  831834.BJ  三维股份   7.43             交易  ...              7.09              7.08         151  831834
3  832225.BJ  利通科技  17.62             交易  ...             17.10             17.27         151  832225
4  832419.BJ  路斯股份  10.97             交易  ...             10.64             10.36         151  832419
5  832522.BJ  纳科诺尔  20.96             交易  ...             20.24             20.33         151  832522
6  833580.BJ  科创新材   7.43             交易  ...              7.20              7.05         151  833580
7  834415.BJ  恒拓开源   6.38             交易  ...              6.13              6.14         151  834415
8  834639.BJ  晨光电缆   5.36             交易  ...              5.13              5.09         151  834639
9  836260.BJ  中寰股份   8.41             交易  ...              8.12              8.07         151  836260[10 rows x 23 columns]
['000782.SZ', '831304.BJ', '831834.BJ', '832225.BJ', '832419.BJ', '832522.BJ', '833580.BJ', '834415.BJ', '834639.BJ', '836260.BJ']
已成功将列表写入CSV文件!
成功从CSV文件中读取数据并转换为列表形式。
['000782.SZ', '831304.BJ', '831834.BJ', '832225.BJ', '832419.BJ', '832522.BJ', '833580.BJ', '834415.BJ', '834639.BJ', '836260.BJ']
请按任意键继续. . .

总结

为了快速实现信息交换,博主尝试了很多方法,这个方法既简单,需要的代码也最少。极容易上手也不容易出错。

如果有人说我要保存成dict,可以移步到博主TOML的文章。
【TOML配置文件】配置文件我用TOML!人性化,少出错!

这篇关于【大麦小米学量化】将list写入csv并读取还原为list(自选股操作)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/500255

相关文章

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

关于pandas的read_csv方法使用解读

《关于pandas的read_csv方法使用解读》:本文主要介绍关于pandas的read_csv方法使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录pandas的read_csv方法解读read_csv中的参数基本参数通用解析参数空值处理相关参数时间处理相关

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要