因为上次帮我们产品处理过一个文件,他想生成能excel处理操作的。但是上次由于时间非常紧张,所以并没有处理好。

正好无聊就来好好研究一下 ,找算法要了几个 csv文件。来好好玩一玩。

全篇使用了python自带的csv的库

import csv

csv.reader(csvfile[, dialect='excel'][, fmtparam])

csv.writer(csvfile, dialect='excel', **fmtparams)

以及两个我没有尝试的字典读写方法,有兴趣的可以参照官方文档。

要来的文件用ide打开粗略一看是这样。

这里可以比较明显的注意到,这是我编译器ji进行的换行,所以其实在生成它们的时候并没有做换行处理。这其实非常糟糕。。给格式化操作带来了难度。

所以在excel中看应该是这样

一行到底,根本毫无可读性。。 而且这里注意,我们可以发现里面的中文字符已经可以正常显示了,而使用过csv或者有过类似操作经验的同学肯定遇到过,在生成csv后用excel打开中文字符都显示为乱码,而让人不知所措。

这里就要提到一个叫BOM(\xef\xbb\xbf)的东西。

可以参考一下这篇文章:http://segmentfault.com/a/1190000004321605

加上bom之后,就能被excel正确读取和识别了。这里注意,其实使用osx下的记事本或者别的ide或者是文本编辑器打开本身都没有什么问题。。但是excel就是需要bom。。哎没办法。本人测试了许多情况,似乎加上了bom也不会对原文本造成什么奇怪的影响。

这里我们使用这样的代码来给一个csv文件加上bom

defadd_bom():

filename= 'issue_item_daily_stats.csv'with open('{filename}'.format(filename=filename), 'r+b') as file:

file.writelines('\xef\xbb\xbf')

随后我们要做的就是把全部在一行的csv,格式化成我们想要的样子。 这里我直接贴一段我操作的代码 大家感受一下。

defread_format_csv():

filename= 'issue_item_daily_stats_part1.csv'write_filename= 'change2.csv'with open('{filename}'.format(filename=filename), 'rb') as csv_file:

csv_reader=csv.reader(csv_file)

with open('{write_filename}'.format(write_filename=write_filename), 'wb') as write_file:

items=[]

csv_writer= csv.writer(write_file, dialect='excel')

csv_writer.writerow(["\xef\xbb\xbf"])for line incsv_reader:for index, i inenumerate(line):if index ==0:

items.append(i)continue

if index % 9 ==0:

csv_writer.writerow(items)

items=[]

items.append(i)else:

items.append(i)

这里的主要思路就是,从原文件中读取出需要格式化的信息,暂时保存在csv_reader里。然后重新打开一个文件,将csv_reader里获得的东西重新写入到新的文件里,下面可以看到我使用for循环对他进行遍历。

这里注意我在打开新文件的时候,就已经在头部写入了bom('\xef\xbb\xbf'),然后遍历csv_reader。这里csv_reader其实是每一行的一个迭代器对象。因为我们只有一行。然后遍历到的也就是第一行来得到一个数组。第一行里面数组有非常多的参数,都以',' 隔开。 所以我们再对数组进行遍历,然后按照文件的具体规则来就行格式化即可。

贴上一个格式化完毕的截图

就是这样,主要讲解一个csv文件格式化处理的思路。这里我并没有仔细介绍csv库。所以大家对这个库如果不熟悉,可以查阅一下资料和文档。 作为一个自带的轻量级操作csv的库我认为还是比较方便和好用的。处理更大型的csv文件我们还有pandas可以使用。到时候我碰到了再给大家介绍。

python中csv库_关于python 自带csv库的使用心得 附带操作实例以及excel下乱码的解决...相关推荐

  1. python中集合运算_入门 | 一文带你了解Python集合与基本的集合运算

    原标题:入门 | 一文带你了解Python集合与基本的集合运算 选自DataCamp 作者:Michael Galarnyk 参与:Geek Ai.思源 一般我们熟悉 Python 中列表.元组及字典 ...

  2. 在python中设置密码登录_在python中生成密码

    在python中生成密码 我想在python中生成一些字母数字密码. 一些可能的方法是: import string from random import sample, choice chars = ...

  3. python中tkinter模块_使用Python中的tkinter模块作图的方法

    python简述: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python[1 ...

  4. python中mod运算符_自定义 Python 类中的运算符和函数重载(上)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 f ...

  5. python中 什么意思_请问python中%代表什么意思?

    婷婷同学_ 1.格式符例如:a = 'test'print 'it is a %s' %(a)打印的结果就是 it is a test2.单独看%,是一个运算符号,求余数.例如:求模运算,相当于mod ...

  6. python中globals用法_在Python中使用globals()的原因?

    在"声明性python"中很有用. 例如,在下面的globals()和globals()中,是用于定义一系列数据结构的类,这些数据结构随后将被某些程序包用作其输入或配置. 这使您可 ...

  7. lambda在python中的用法_在python中对lambda使用.assign()方法

    我在Python中运行以下代码:#Declaring these now for later use in the plots TOP_CAP_TITLE = 'Top 10 market capit ...

  8. python中计算带分数_聊聊 python 数据处理全家桶(Redis篇)

    作者:星安果 来源:AirPython 前面两篇文章聊到了 python 处理 Mysql.Sqlite 数据库常用方式,本篇文章继续说另外一种比较常用的数据存储方式:Redis Redis:Remo ...

  9. python中的帮助_在Python中使用help帮助

    原博文 2014-10-18 23:21 − 在Python中使用help帮助 >>> import numpy >>> help(numpy.argsort) H ...

最新文章

  1. tcpdump抓包文件提取http附加资源
  2. java封装Mongodb3.2.1工具类
  3. “耐撕”团队2016.04.12站立会议
  4. 按键精灵 getcursorpos没有用_给你们想要的一键输出II按键精灵脚本开发教程
  5. sqlite字段是否存在_学习廖雪峰的JAVA教程---反射(访问字段)
  6. 全国计算机等级考试题库二级C操作题100套(第41套)
  7. 转-HTTPClient调用https请求,通过基本认证用户名密码(Basic Auth)
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的药店进销存管理系统
  9. 企业实战(2) 项目环境搭建之Tomcat部署
  10. 计算机学office有必要吗,计算机二级office要学多久
  11. Android给力模拟器,秒杀原生模拟器到渣
  12. 得力888D标签打印机 怎么编辑打印标签
  13. 在Ubuntu18.04TLS下安装小米随身wifi驱动
  14. 东财《组织行为学B》综合作业
  15. 计算机系统时间无法更改,Win7电脑无法修改系统时间如何解决?
  16. 已经不能再简单的UE4中播放视频没有声音的解决方案
  17. Python实战——外星人入侵游戏
  18. 人员离职it检查_公司软件开发人员离职信_检讨书
  19. Lambda相关图形
  20. 将电脑本地视频转成rtsp和rtmp视频流

热门文章

  1. opencv 人脸识别_Python学习:基于Opencv来快速实现人脸识别(完整版)
  2. centos7下qt creator python配置
  3. 2016年10月起微软更改了更新服务模型
  4. python颜色库_Python可视化_matplotlib08-palettable颜色库(四)
  5. 计算机鼠标不好使,鼠标不好用 原因竟然让人哭笑不得
  6. android 读取 网页,Android读取网页内容
  7. python教学视频k_GitHub - y000k/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...
  8. gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明
  9. iis服务器建立动态网站,09-IIS添加动态网站
  10. 加载tensorflow模型后只运行变量名实现预测(sess.run)