Python 官网:https://www.python.org/
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚

昨天在用csv格式存储我的股票买卖记录的时候,想到可不可以不用默认的半角逗号(英文逗号“,”)?在文本编辑器中看着被英文逗号分隔的字符像拧在一起的铁链,拥挤得别扭。用中文逗号多好!大气明朗,界限清晰。但pandas又该怎么读取哩?我可只会默认的用法——
import pandas as pd
df = pd.read_csv(filename)
标准的csv
交易日期,时间,交易类型,单价,数量,费用
2022-11-08,9:55,1,2.86,600,0
2022-11-08,9:46,1,2.86,1000,0
2022-11-03,9:53,-1,2.62,500,5
2022-09-19,10:21,-1,2.76,1100,5
2022-09-07,10:55,-1,2.97,500,5
2022-09-01,10:27,-1,2.9,1000,5
2022-09-17,09:48,1,3.11,400,5
2022-08-4,10:15,-1,2.9,500,5
2022-07-24,10:27,-1,3.08,400,5
2022-06-24,14:36,-1,3.26,500,5
用中文逗号分隔
交易日期,时间,交易类型,单价,数量,费用
2022-11-08,9:55,1,2.86,600,0
2022-11-08,9:46,1,2.86,1000,0
2022-11-03,9:53,-1,2.62,500,5
2022-09-19,10:21,-1,2.76,1100,5
2022-09-07,10:55,-1,2.97,500,5
2022-09-01,10:27,-1,2.9,1000,5
2022-09-17,09:48,1,3.11,400,5
2022-08-4,10:15,-1,2.9,500,5
2022-07-24,10:27,-1,3.08,400,5
2022-06-24,14:36,-1,3.26,500,5
csv文本倒是好看了,但pandas.read_csv()方法豆解析成这样子的了😭
幸好在老齐的书中学到了help()大法🤗🤗。上法宝——
import pandas as pd
help(pd.read_csv)
Python3.10.2下的部分help()
Python3.10.2下的部分help()
Python3.6.6下的pandas版本是0.23.4,Python3.10.2下的pandas版本是1.4.1。
经试炼其参数设置中的“sep=”就是指明要读取的csv所用分隔符的(pandas0.23.4中是“sep=’,’”,pandas1.4.1中是“sep=<no_default>”,她们都可以正常读取用英文逗号分隔的csv文档。)。经试炼,可以设置任意字符,但也不要让她与您的数据字符撞车。如设置成中文逗号,您要分割的数据中多半会有中文逗号,那就会让机器无所适从。pandas默认的英文逗号,但数据中也有可能包含英文逗号,一样传参让机器迷茫。
如果前面csv文档第一行多出一个英文逗号,pandas就会解析成这样子了——
经过一番推敲,我觉得反斜杠“\”比较合适。不但在文本中出现较少,且直接读csv文本也还算清晰明了。只要在read_csv方法参数中用“sep=”告诉pandas,就可以正确解析数据。这样子,也让使用默认代码的搬运工抓狂,因为他不明白您的csv文本为啥子嫩多反斜杠,他还解析不出来。🤗🤗🤗
反斜杠分割的csv
交易日期\时间\交易类型\单价\数量\费用
2022-11-08\9:55\1\2.86\600\0
2022-11-08\9:46\1\2.86\1000\0
2022-11-03\9:53-1\2.62\500\5
2022-09-19\10:21-1\2.76\1100\5
2022-09-07\10:55-1\2.97\500\5
2022-09-01\10:27-1\2.9\1000\5
2022-09-17\09:48\1\3.11\400\5
2022-08-4\10:15-1\2.9\500\5
2022-07-24\10:27-1\3.08\400\5
2022-06-24\14:36-1\3.26\500\5
设置反斜杠的坑
df = pd.read_csv(filename, sep='\') # 此行代码在*.py文件中第20行代码
Python3.6.6、Python3.10.2下的报错截屏
原来反斜杠单独出现,是续行符,“粘接”下一行代码,意即本行连同下一行本是一条语句。一般出现在行末。我的写法让python解析成续行符了,不可以用原字符串符号“r”,Python 一样要“误解”。用反斜杠转义,可解此错误。告诉Python我这里只是反斜杠而不是续行符。
df = pd.read_csv(filename, sep='\\') # 此行代码在*.py文件中第20行代码
用sep=’\'参数说明,Pandas完美解析反斜杠分割的csv数据文本
因为这一顿操作,我的文件工具有了第一个方法“自动替换文件中的某一字符”。🤗🤗
#!/sur/bin/nve python
# coding: utf-8
class MyFile:
''' 我的文件打理工具 '''
def replace_char(self, filename, old, new):
''' 字符串替换 '''
s = open(filename).read()
s = s.replace(old, new)
with open(filename, 'w') as f:
f.write(s)
__上一篇:__ Python之魔幻切片
__下一篇:__
我的HOT博:
- 给定字符串提取姓名(字符串、list、re“零宽断言”)(1051阅读)
- 我的 Python.color() (Python 色彩打印控制)(1125阅读)
- python清屏(1290阅读)
- 回车符、换行符和回车换行符(1322阅读)
- Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义(1171阅读)
- pandas 数据类型之 Series(1224阅读)
- 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )(1270阅读)
- 练习:银行复利计算(用 for 循环解一道初中小题)(1188阅读)
- pandas 数据类型之 DataFrame(2136阅读)
- :班里有人和我同生日难吗?(蒙特卡洛随机模拟法)(2180阅读)
- Python字符串居中显示(2359阅读)
- 练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)(1665阅读)
- 用 pandas 解一道小题(2007阅读)
- 可迭代对象和四个函数(1083阅读)
- “快乐数”判断(1252阅读)
- 罗马数字转换器(构造元素取模)(2159阅读)
- Hot:罗马数字(转换器|罗生成器)(4750阅读)
- Hot:让QQ群昵称色变的代码(36654阅读)
- Hot:斐波那契数列(递归| for )(4071阅读)
- 柱状图中最大矩形(1663阅读)
- 排序数组元素的重复起止(1258阅读)
- 电话拨号键盘字母组合(1402阅读)
- 密码强度检测器(1986阅读)
- 求列表平衡点(1837阅读)
- Hot: 字符串统计(4308阅读)
- Hot:尼姆游戏(聪明版首发)(3493阅读)尼姆游戏(优化版)(1175阅读)
推荐条件 点阅破千
回目录
精品文章:
- 好文力荐:《python 完全自学教程》齐伟书稿免费连载
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
回目录
Python 入门指南【Python 3.6.3】
好文力荐:
全栈领域优质创作者——寒佬(还是国内某高校学生)好文:《非技术文—关于英语和如何正确的提问》,“英语”和“会提问”是学习的两大利器。
CSDN实用技巧博文: