• python处理数据(一)


    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 Fileswkhtmltopdfinwkhtmltopdf.exe")
        try:
            pdfkit.from_url(purl, pdfFileName, configuration=config)
        except:
            continue

    结果:

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

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

  • 相关阅读:
    静态成员变量
    设计模式:空对象模式(Null Object Pattern)
    超详细LAMP环境搭建
    WCF 学习笔记之双工实现
    new和instanceof的内部机制
    C#开源磁盘/内存缓存引擎
    C++设计模式-Flyweight享元模式
    Javascript内存泄漏
    流量计数器
    运用Mono.Cecil 反射读取.NET程序集元数据
  • 原文地址:https://www.cnblogs.com/yangjian319/p/9157977.html
Copyright © 2020-2023  润新知