• day29-20180607笔记


    笔记:Python3 数据处理

    一、csv数据处理

    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,内容如下:

    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())

    以上实例输出的结果

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

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

    二、excel数据处理

    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,内容如下:

    #!/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))

    以上实例输出的结果

    共有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))

    以上实例输出的结果

    ####################
    ['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)

    以上实例输出的结果

    ##############################
    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 Fileswkhtmltopdfinwkhtmltopdf.exe")
        try:
            pdfkit.from_url(url, file)
        except:
            continue
  • 相关阅读:
    育碧-彩虹六号如何绑定二次验证码/两步验证/身份验证?
    leetcode刷题-95/96/98
    leetcode刷题-94二叉树的中序遍历
    leetcode刷题-93复原IP地址
    leetcode刷题-91解码方法
    leetcode刷题-90子集 II
    leetcode刷题-89格雷编码
    leetcode刷题-88.合并两个有序数组
    leetcode刷题-86分隔链表
    leetcode刷题-82.删除排序链表中的重复元素 II
  • 原文地址:https://www.cnblogs.com/ivan-yang/p/9160364.html
Copyright © 2020-2023  润新知