day29-20180607笔记

笔记:Python3 数据处理html

 

1、csv数据处理
python

Csv文件格式:
看下.csv文件的定义:
逗号分隔值(Comma-Separated Values,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或者相似软件打开,样子都是咱们常见的表格形式。

新建一个csv文件,如test.csv,内容以下:linux

1,2,3,4,5,6,7,8,9,10
10,9,8,7,6,5,4,3,2,1
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/7 20:26
# @Author  : yangyuanqiang
# @File    : demon1.py


import csv

fileName = "test.csv"

#经过csv模块处理数据
with open(fileName, "r", encoding="utf-8") as f:
    text = csv.reader(f)
    for line in text:
        for i in line:
            print(i)

#经过字符串切割处理数据
# with open(fileName, "r", encoding="utf-8") as f:
#     for line in f:
#         for i in line.split(","):
#             print(i.strip())

以上实例输出的结果session

1
2
3
4
5
6
7
8
9
10
10
9
8
7
6
5
4
3
2
1

注意:将数据存储为后缀.csv文件格式,可使用excel程序打开.csv文件,会自动以逗号为换行url

 

2、excel数据处理spa

python提供有第三方库来支持对excel的操做,python处理excel文件用的第三方模块库有xlrd、xlwt、xluntils和pyExcelerator,除此以外,python处理excel还能够用win32com和openpyxl模块。下面咱们先安装第三方库
Pip install xlrd
Pip install xlwt
Pip install xluntils
Pip install pyExcelerator
Xlrd只能进行读取excel文件,无法进行写入文件,xlwt能够写入文件,可是不能在已有的excel的文件上进行修改,若是有这个需求,就须要使用xluntils模块了,pyExcelerator模块与xlwt相似,也能够用来生成excel文件

新建一个excel文件,名为test.xlsx,内容以下:3d

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/7 21:19
# @Author  : yangyuanqiang
# @File    : demon2.py

#读取excel表的数据

import xlrd

data = xlrd.open_workbook("test.xlsx")
table = data.sheets()[0]    #读取excel表里的下标表格
rows = table.nrows  #查看有多少行数据
print("共有{0} ".format(rows) + " 行数据")
cols = table.ncols  #查看有多少列数据
print("共有{0} ".format(cols) + " 列数据")
#一行一行取数据
for i in range(rows):
    print(table.row_values(i))

以上实例输出的结果excel

共有5  行数据
共有3  列数据
['aaa', 'bbb', 'ccc']
[123.0, 456.0, 789.0]
['abc', 'abc', 'abc']
['ddd', 'eee', 'fff']
['12*', 'df1', '3dd']

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/7 21:19
# @Author  : yangyuanqiang
# @File    : demon2.py

#读取excel表的数据

import xlrd

data = xlrd.open_workbook("test.xlsx")
table = data.sheets()[0]    #读取excel表里的下标表格
rows = table.nrows  #查看有多少行数据
# print("共有{0} ".format(rows) + " 行数据")
cols = table.ncols  #查看有多少列数据
# print("共有{0} ".format(cols) + " 列数据")
#一行一行取数据
# for i in range(rows):
#     print(table.row_values(i))

print("##"*10)
#一列一列取数据
for j in range(cols):
    print(table.col_values(j))

以上实例输出的结果code

####################
['aaa', 123.0, 'abc', 'ddd', '12*']
['bbb', 456.0, 'abc', 'eee', 'df1']
['ccc', 789.0, 'abc', 'fff', '3dd']

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/7 21:19
# @Author  : yangyuanqiang
# @File    : demon2.py

#读取excel表的数据

import xlrd

data = xlrd.open_workbook("test.xlsx")
table = data.sheets()[0]    #读取excel表里的下标表格
rows = table.nrows  #查看有多少行数据
# print("共有{0} ".format(rows) + " 行数据")
cols = table.ncols  #查看有多少列数据
# print("共有{0} ".format(cols) + " 列数据")
#一行一行取数据
# for i in range(rows):
#     print(table.row_values(i))

# print("##"*10)
# #一列一列取数据
# for j in range(cols):
#     print(table.col_values(j))

print("###"*10)
#按每行取第一个列的数据
for row in range(rows):
    for col in range(cols):
        cell = table.cell_value(row, col)
        print(cell)

以上实例输出的结果orm

##############################
aaa
bbb
ccc
123.0
456.0
789.0
abc
abc
abc
ddd
eee
fff
12*
df1
3dd

 

写入excel文件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/7 22:02
# @Author  : yangyuanqiang
# @File    : demon3.py

#写excel文件

import xlwt

workbook = xlwt.Workbook()
sheet1 = workbook.add_sheet("test1", cell_overwrite_ok=workbook)
sheet1.write(0,0,"hello1")
sheet1.write(0,1,"hello2")
sheet1.write(0,2,"hello3")
sheet1.write(1,0,"world1")
sheet1.write(1,1,"world2")
sheet1.write(1,2,"world3")

workbook.save("testwrite.xls")
print("create ok")

以上实例输出的结果

create ok

在当前目录下建立了一个testwrite.xls文件,内容以下:

 

 

 三、pdf数据处理

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/9 18:04
# @Author  : yangyuanqiang
# @File    : demon5.py

#Python读出pdf文件

from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfparser import PDFPage
from pdfminer.pdfinterp import PDFResourceManager, PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator
#获取文档对象,你把algorithm.pdf换成你本身的文件名便可。
fp=open("test.pdf","rb")
#建立一个与文档相关联的解释器
parser=PDFParser(fp)
#PDF文档对象,提供密码初始化,没有就不用带password参数。
doc=PDFDocument()

parser.set_document(doc)
doc.set_parser(parser)

doc.initialize()
#检查文件是否容许文本提取
if not doc.is_extractable:
    raise PDFTextExtractionNotAllowed
#连接解释器和文档对象
# parser.set_document(doc)
#doc.set_paeser(parser)
#初始化文档
#doc.initialize("")
#建立PDF资源管理器对象来存储共享资源
resource=PDFResourceManager()
#参数分析器
laparam=LAParams()
#建立一个聚合器
device=PDFPageAggregator(resource, laparams=laparam)
#建立PDF页面解释器
interpreter=PDFPageInterpreter(resource,device)
#使用文档对象获得页面集合
for page in doc.get_pages():
  #使用页面解释器来读取
  interpreter.process_page(page)
  #使用聚合器来获取内容
  layout=device.get_result()
  for out in layout:
    if hasattr(out, "get_text"):
      print(out.get_text())

 

 html转pdf文件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/9 18:08
# @Author  : yangyuanqiang
# @File    : demon6.py


#抓取aming的linux教程,而后制做成pdf文件
#先抓取每一个的网页,而后生成pdf文件

import codecs
import os
import sys

import pdfkit
import requests

base_url = 'http://www.apelearn.com/study_v2/'
if not os.path.exists("aming"):
    os.mkdir("aming")

os.chdir("aming")
s = requests.session()

for i in range(1, 27):
    url = base_url + 'chapter' + str(i) + '.html'
    print(url)
    file = str(i) + '.pdf'
    print(file)
    config = pdfkit.configuration(wkhtmltopdf=r"D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe")
    try:
        pdfkit.from_url(url, file)
    except:
        continue
相关文章
相关标签/搜索