zoukankan      html  css  js  c++  java
  • python爬虫 Comma Separated Values,简称 CSV

    python爬虫
    Python作为现阶段最流行的语言,对于网络的爬取和海量数据的分析,python更胜一筹。

    Comma Separated Values,简称 CSV ,它是一种以逗号分隔数值的文件类型。在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据, CSV 文件通常以纯文本的方式存储数据表,由于爬虫的数据量高效且巨大,今天具体讲一下 Python 对 csv 格式的文件处理。

    首先我们先准备一个 csv 文件,命名为 csv_test.csv 。

    数据源如下:

    姓名年龄电话
    小P 18 138001380000
    小Y 22 138001380000

    1、CSV写入

    import csv
    # 若存在文件,打开csv文件,若不存在即新建文件
    # 如不设置newline='',每行数据会隔一行空白行
    csvfile = open('csv_test.csv', 'w', newline='')
    # 将文件加载到csv对象中
    writer = csv.writer(csvfile)
    # 写入一行数据
    writer.writerow(['姓名', '年龄', '电话'])
    # 多行数据写入
    data = [
        ('小P', '18', '138001380000'),
        ('小Y', '22', '138001380000')
    ]
    writer.writerows(data)
    # 关闭csv对象
    csvfile.close()

    2、csv列表字典写入

    import csv
    csvfile = open('csv_test.csv', 'r')
    # 以列表形式输出
    reader = csv.reader(csvfile)
    # 以字典形式输出,第一行作为字典的键
    # reader = csv.DictReader(csvfile)
    rows = [row for row in reader]
    print(rows)
    
    import csv
    csvfile = open('csv_test.csv', 'r')
    # 以列表形式输出
    reader = csv.reader(csvfile)
    for row in reader:
        if '小P' in row:
            print(row)
    # 以字典形式输出,第一行作为字典的键
    # reader = csv.DictReader(csvfile)
    # for row in reader:
    #     if row['姓名']== '小P':
    #         print(row)

    3、xlwt控制Excel

    import xlwt
    # 新建一个Excel文件
    wb = xlwt.Workbook()
    # 新建一个Sheet
    ws = wb.add_sheet('Python', cell_overwrite_ok=True)
    # 定义字体对齐方式对象
    alignment = xlwt.Alignment()
    # 设置水平方向
    # HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED
    # HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
    alignment.horz = xlwt.Alignment.HORZ_CENTER
    # 设置垂直方向
    # VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
    alignment.vert = xlwt.Alignment.VERT_CENTER
    # 定义格式对象
    style = xlwt.XFStyle()
    style.alignment = alignment
    # 合并单元格write_merge(开始行, 结束行, 开始列, 结束列, 内容, 格式)
    ws.write_merge(0, 0, 0, 5, 'Python网络爬虫', style)
    
    # 写入数据wb.write(行,列,内容)
    for i in range(2, 7):
        for k in range(5):
            ws.write(i, k, i+k)
        # Excel公式xlwt.Formula
        ws.write(i, 5, xlwt.Formula('SUM(A'+str(i+1)+':E'+str(i+1)+')'))
    
    # 插入图片,insert_bitmap(img, x, y, x1, y1, scale_x=0.8, scale_y=1)
    # 图片格式必须为bmp
    # x表示行数,y表示列数
    # x1表示相对原来位置向下偏移的像素
    # y1表示相对原来位置向右偏移的像素
    # scale_x,scale_y缩放比例
    ws.insert_bitmap('E:\test.bmp', 9, 1, 2, 2, scale_x=0.3, scale_y=0.3)
    
    # 保存文件
    wb.save('file.xls')

    4、xlrd获取Excel

    import xlrd
    wb = xlrd.open_workbook('file.xls')
    # 获取Sheets总数
    ws_count = wb.nsheets
    print('Sheets总数:', ws_count)
    # 通过索引顺序获取Sheets
    # ws = wb.sheets()[0]
    # ws = wb.sheet_by_index(0)
    # 通过Sheets名获取Sheets
    ws = wb.sheet_by_name('Python')
    # 获取整行的值(以列表返回内容)
    row_value = ws.row_values(3)
    print('第4行数据:', row_value)
    # 获取整列的值(以列表返回内容)
    row_col = ws.col_values(3)
    print('D列数据:', row_col)
    
    # 获得所有行列
    nrows = ws.nrows
    ncols = ws.ncols
    print('总行数:', nrows, ',总列数:', ncols)
    
    # 获取某个单元格内容cell(行, 列)
    cell_F3 = ws.cell(2, 5).value
    print('F3内容:', cell_F3)
    
    # 使用行列索引获取某个单元格内容
    row_F3 = ws.row(2)[5].value
    col_F3 = ws.col(5)[2].value
    print('F3内容:', row_F3, 'F3内容:', col_F3)

    等等.......................


    ————————————————
    版权声明:本文为CSDN博主「恰巧动心」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_45414559/article/details/105362077

    你有什么心态,就有什么样的人生。管不好自己的心态,注定你就是个弱者。
  • 相关阅读:
    Tree的两种存储形式
    滚轮缩放效果
    从hello world 说程序运行机制
    词法分析器的实现
    MSDN中回调函数的讲解及其C#例子:用委托实现回调函数
    在后台new出页面(组件)
    HTML中多种空格转义字符
    ios 博客集合
    IOS学习
    Apple Swift编程语言入门教程
  • 原文地址:https://www.cnblogs.com/LQZ888/p/12673741.html
Copyright © 2011-2022 走看看