CSV数据处理

csv文件格式

逗号分隔符(csv),有时也称为字符分隔值,因为分隔字符也可以不是逗号,其文件以纯文本的形式存储表格数据(数字和文本)。
纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。
csv文件由任意数目的记录组成,记录间以某种换行符分割;每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

csv数据格式

27,20,14,15,14,12,94,64,37,1015,1013,1009,7,5,2,21,8,35,0.00,152

另外,csv文件可以直接用excel或者类似软件打开,样子都是我们常见的表格形式。

常用读取数据方法

import codecs
lineText = list()
with codecs.open("test.csv",encoding="utf-8") as f:
for line in f.readlines():
print (line.split(",")) #以列表形式,打印每一行的数据。
lineText.append(line.split(","))
print (lineText) #把上面所有行作为元素数据,存入一个列表中。

处理csv格式数据

import codecs
import csv
fileName = "test.csv"
with codecs.open(fileName) as fcsv:
linecsv = csv.reader(fcsv)
rows = [row for row in linecsv]
print (rows)

excel数据处理

python提供有第三方库来支持excel的操作,python处理excel文件用的第三方模块库,有xlrd、xlwt、xluntils和pyExcelerator,除此之外,python处理excel还可以用win32com和openpyxl模块.我们主要用xlrd、xlwt、xluntils这三个模块,pyExcelerator模块偶尔也会用。

xlrd    只能进行读取excel文件,没法进行写入文件;
xlwt 可以写入文件,但是不能在已有的excel的文件上进行修改;
xluntils 可以在已有的excel文件上进行修改;
pyExcelerator 与xlwt类似,也可以用来生成excel文件

相关模块安装

pip install xlrd
pip install xlwt
pip install xlutils
pip install pyExcelerator

按行读取表数据

import xlrd
def readExcel():
data = xlrd.open_workbook('test.xlsx')
table = data.sheets()[0] # 打开第一张表
nrows = table.nrows # 获取表的行数
for i in range(nrows): # 循环逐行打印
print(table.row_values(i)) #通过row_values来获取每行的值 if __name__ == '__main__':
readExcel()

按列读取表数据

import xlrd
data = xlrd.open_workbook("whsc.xlsx")
table2 = data.sheet_by_name("域名") #sheet标签页的名称
for col in range(table2.ncols):
print (table2.col_values(col))

创建excel文件并写入内容

import xlwt
excel = xlwt.Workbook()
#创建3个表
sheet1 = excel.add_sheet("sheet1")
sheet2 = excel.add_sheet("sheet2")
sheet3 = excel.add_sheet("sheet3")
#只在第一个表sheet1里写数据,如下:
sheet1.write(0,0,"hello world1", cell_overwrite_ok=True)
sheet1.write(1,0,"hello world2", cell_overwrite_ok=True)
sheet1.write(2,0,"hello world3", cell_overwrite_ok=True)
#第一个是行,第二个是列,第三个是内容,第二个参数用来确认同一个cell单元是否可以重设值。
excel.save("hello.xlsx")
print("创建hello.xlsx完成")

使用样式、字体等效果

import xlwt
excel = xlwt.Workbook()
#创建3个表
sheet1 = excel.add_sheet("sheet1")
sheet2 = excel.add_sheet("sheet2")
sheet3 = excel.add_sheet("sheet3")
#初始化样式
style = xlwt.XFStyle()
#为样式创建字体
font = xlwt.Font()
font.name = 'Times New Roman' #指定字体名称
font.bold = True #是否加粗
#设置样式的字体
style.font = font
#使用样式
sheet3.write(0,1,'some bold Times text',style)
#保存该excel文件,有同名文件时直接覆盖
excel.save('hello.xlsx')
print('创建hello.xlsx文件完成!')

文件转换成pdf格式

在工作中,会遇到把html文件转换成pdf文件,转换成pdf有三种方法。
python给我们提供了pdfkit这个模块,直接安装使用就可以了。

安装该模块

pip install pdfkit

简单例子

import pdfkit
pdfkit.from_file("hello.html", 1.pdf) # 网页转换成pdf(直接把url转换成pdf文件)
pdfkit.from_url("www.baidu.com", 2.pdf) # Html转换成pdf
pdfkit.from_string("hello world", 3.pdf) # 字符串转换成pdf

抓取apelearn上的教程,并抓换成pdf

import os
import re
import pdfkit
import requests if not os.path.exists("aminglinux"):
os.mkdir("aminglinux") # 创建一个目录来存放生成的pdf文件 os.chdir("aminglinux") # 切换到创建好的目录 url = "http://www.apelearn.com/study_v2/"
s = requests.session()
text = s.get(url).text
reg = re.compile(r'<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"(.*)\">.*<\/a><\/li>')
result = reg.findall(text)
res = list(set(result)) for i in res:
purl = "{0}{1}".format(url, i)
print (purl)
pdfFileName = i.replace("html", "pdf")
print (pdfFileName)
config = pdfkit.configuration(wkhtmltopdf=r"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe")
try:
pdfkit.from_url(purl, pdfFileName, configuration=config)
except:
continue

结果:

chapter1.pdf
chapter2.pdf
chapter3.pdf
chapter4.pdf
chapter5.pdf
......
......

注意:如果使用的是windows需要安装一个wkhtmltopdf驱动,否则会报错。

python处理数据(一)的更多相关文章

  1. python和数据科学(Anaconda)

    Python拥有着极其丰富且稳定的数据科学工具环境.遗憾的是,对不了解的人来说这个环境犹如丛林一般(cue snake joke).在这篇文章中,我会一步一步指导你怎么进入这个PyData丛林. 你可 ...

  2. 用 Python 排序数据的多种方法

    用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...

  3. python爬虫+数据可视化项目(关注、持续更新)

    python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...

  4. python调用数据返回字典dict数据的现象2

    python调用数据返回字典dict数据的现象2 思考: 话题1连接:https://www.cnblogs.com/zwgbk/p/10248479.html在打印和添加时候加上内存地址id(),可 ...

  5. python调用数据返回字典dict数据的现象1

    python调用数据返回字典dict数据的现象1 思考: 可以看到这两种情况,区别在于构造函数make()里赋值给字典dict的方式不同.使用相同的调用方式,而结果却完全不同.可以看到第二种情况才是我 ...

  6. python 小数据池,is and "==",decode ,encode

    一:小数据池 1.python运行中的缓存: 2.目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 3.python 缓存数据:缓存:int, str, bool.         ...

  7. 【转】Python用数据说明程序员需要掌握的技能

    [转]Python用数据说明程序员需要掌握的技能 https://blog.csdn.net/HuangZhang_123/article/details/80497951 当下是一个大数据的时代,各 ...

  8. MySQL实验准备(二)--Python模拟数据(MySQL数据库)

    Python模拟数据(MySQL数据库) 数据模拟 目的:模拟多个表的插入和查询数据的模拟,再通过基准测试脚本测试服务器性能和收集数据,仿真模拟. 备注: 如果需要基础的python环境,可以查看&l ...

  9. 数据挖掘(二)用python实现数据探索:汇总统计和可视化

    今天我们来讲一讲有关数据探索的问题.其实这个概念还蛮容易理解的,就是我们刚拿到数据之后对数据进行的一个探索的过程,旨在了解数据的属性与分布,发现数据一些明显的规律,这样的话一方面有助于我们进行数据预处 ...

  10. 【转】Python之数据序列化(json、pickle、shelve)

    [转]Python之数据序列化(json.pickle.shelve) 本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型 ...

随机推荐

  1. Day1:了解APICloud平台、理解APICloud应用设计思想、掌握平台使用流程。学习如何对一款APP进行需求分析、功能分解和架构设计等编码之前重要的准备工作

    学习目标 总体上了解一下APICloud平台,重点介绍相关的学习资源,入门资料,常见的FAQ等 明确我们这七天要开发一个什么样的APP,明确功能需求,跟上每天的课程节奏,可以课前预习 梳理出对于一款A ...

  2. ClickOnce 发布WinForm应用程序(非签名方式)

    ClickOnce IIS7发布WinForm应用程序,非签名方式(不勾选签名中的"为ClickOnce清单签名") 一.在D盘上建一个文件夹”MyAppPath”.      该 ...

  3. 【拓扑 && 模板】Kosaraju算法

    #include<bits/stdc++.h> using namespace std; ; vector <int> g1[maxn],g2[maxn]; stack < ...

  4. java基础之基础语法详录

    [前言] java的语法先从基础语法学,Java语言是由类和对象组成的,其对象和类又是由方法和变量组成,而方法,又包含了语句和表达式. 对象:(几乎)一切都是对象,比如:一只熊猫,他的外观,颜色,他在 ...

  5. eclipse编译项目:Java @Override 注解报错的解决方法

    错误: 在 eclipse 的新工作空间开发项目时,出现大面积方法编译错误.鼠标放在方法名上后显示让我们去掉 @override 注解,如图: 原因: @Override 是 jdk5 引入的机制,但 ...

  6. int类型转换byte类型

    计算机中,int类型占用4个字节,byte类型占用1个字节: 当int类型强转为byte类型时,计算机会截取最后的八位(1个字节): 由于计算机存储数据时,都是以补码的形式进行存储. 然而,我们通常看 ...

  7. 如何优雅的爬取 gzip 格式的页面并保存在本地(java实现)

    1. 引言 在爬取汽车销量数据时需要爬取 html 保存在本地后再做分析,由于一些页面的 gzip 编码格式, 获取后要先解压缩,否则看到的是一片乱码.在网络上仔细搜索了下,终于在这里找到了一个优雅的 ...

  8. 关于HSQLDB访问已有数据库文件的操作说明

    关于HSQLDB数据库的创建,本文不做过多描述,可以在百度上搜索一下,有许多. 对于访问已存在的库文件,网上找了半天,没有整理的很清楚的参考资料,现将自己的操作过程整理如下,以供参考. 1.先下载一个 ...

  9. Asp.Net Mvc表单提交(批量提交)

    Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 采用form表单提交 name=value类型,只要Action参数的变量名和input的name相同就行 html ...

  10. jQuery导入及测试

    jQuery导入: <script type="text/javascript" src="js/jquery-3.1.1.min.js">< ...