作者nepholi (我不是炮哥)
看板Python
标题[问题] pandas.to_csv 字串型态的数字
时间Wed Dec 25 10:11:58 2019
(已解)↓↓↓
使用纯文字编辑器开启CSV档案发现前置0都还在
所以诚如H大回文所说 是excel等编辑器的显示方式造成的视觉上错觉
实际上卡号资料依然使用字串储存
後续使用C++去跑也没问题
(已解)↑↑↑
Hi all,
小弟刚接触Py没多久
经历只有用google大神边查边学基本语法
然後只拚出一套暴力型爬虫
所以可能有些东西不知道怎麽查或找错方向再请各位指教
这次要处理一笔资料是excel档要转成csv给後续一支正常运作中的C++读取
其中excel的内容为 (以下为虚构)
部门 | 卡号 | 名字 | 时间 |
ABC | 00010 | John | 2019/12/25 08:00:01 |
ABC | 00011 | Tom | 2019/12/25 08:02:55 |
..以此类推
用最直接的写法
df = pd.read_excel('test.xlsx', usecols="A:D", dtype={'卡号':str})
可以成功读进我想要的资料及型态
1.卡号为str (为了保留完整五位数)
2.日期为datatime
然後
df.to_csv('hello.csv', index=None, header=True, encoding='utf-8-sig',
quoting=csv.QUOTE_NONNUMERIC)
这句跑完之後产出的csv其中卡号跟日期栏位却不是我想要的5位数及显示秒数
而是
部门 | 卡号 | 名字 | 时间 |
ABC | 10 | John | 2019/12/25 08:00 |
ABC | 11 | Tom | 2019/12/25 08:02 |
我有想过是不是csv的储存格格式造成
日期的部分证实的确是
但卡号的部分被预设为"通用格式"导致我的卡号被去掉了前置0
不晓得有没有办法可以在python的code里面去设定这个呢
我找了pandas的官网说明to_csv但无斩获
不知道是不是我误会或漏看了..
感谢XD
P.S. 因为C++里面读取卡号後并没有预设要做补0的动作
所以希望能在py这部分就处理掉
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.72.13.133 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1577239921.A.46F.html
1F:推 ctr1: 把每个卡号前面加个单引号了 '00010 12/25 16:44
c大的想法是用'让这串数字被py认为完全是一串字吗XD 这我倒还真的没想过
2F:→ Hsins: 楼上那是针对试算表内格式的处理方式,但他这里要丢给 C++ 12/25 18:08
3F:→ Hsins: 处理的,这样反而是多此一举... 12/25 18:09
H大说的也有道理 已经拜读了您下一篇的讨论 感谢
※ 编辑: nepholi (211.72.13.133 台湾), 12/26/2019 10:50:54
※ 编辑: nepholi (211.72.13.133 台湾), 12/26/2019 10:56:27