反斜杠,让您的csv文档字符不撞车;让“借”您csv数据的人叫苦不迭。

发布于:2022-11-10 ⋅ 阅读:(969) ⋅ 点赞:(0)

【点击此处跳转笔记正文】

Python 官网https://www.python.org/




  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


等风来,不如追风去……


反斜杠(“\”)
让您的csv文档字符不撞车
(让“借”(白嫖)您csv数据的人叫苦不迭)


  昨天在用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博:

    本文含有隐藏内容,请 开通VIP 后查看

    网站公告

    今日签到

    点亮在社区的每一天
    去签到