csv 与openpyxl函数

csv函数

常用的存储数据的方式有两种——存储成csv格式文件、存储成Excel文件(不是复制黏贴的那种)

前面,我有讲到json是特殊的字符串。其实,csv也是一种字符串文件的格式,它组织数据的语法就是在字符串之间加分隔符——行与行之间是加换行符,同列之间是加逗号分隔。

为什么要加分隔符?因为不加的话,数据都堆在一起,会显得杂乱无章,也不方便我们之后提取和查找。这也是一种让数据变得有规律的组织方式。

它可以用任意的文本编辑器打开(如记事本),也可以用Excel打开,还可以通过Excel把文件另存为csv格式(因为Excel支持csv格式文件)。

另外,用csv格式存储数据,读写比较方便,易于实现,文件也会比Excel文件小。但csv文件缺少Excel文件本身的很多功能,比如不能嵌入图像和图表,不能生成公式。

import csv
#引用csv模块。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
#创建csv文件,我们要先调用open()函数,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。

加newline=' '参数的原因是,可以避免csv文件出现两倍的行距(就是能避免表格的行与行之间出现空白行)。加encoding='utf-8',可以避免编码问题导致的报错或乱码。

创建完csv文件后,我们要借助csv.writer()函数来建立一个writer对象。

import csv
#引用csv模块。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
#调用open()函数打开csv文件,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。
writer = csv.writer(csv_file)
# 用csv.writer()函数创建一个writer对象。

那怎么往csv文件里写入新的内容呢?答案是——调用writer对象的writerow()方法。

writer.writerow(['电影','豆瓣评分'])
#借助writerow()函数可以在csv文件里写入一行文字 "电影"和“豆瓣评分”

提醒:writerow()函数里,需要放入列表参数,所以我们得把要写入的内容写成列表。就像['电影','豆瓣评分']。

import csv
#引用csv模块。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
#调用open()函数打开csv文件,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。
writer = csv.writer(csv_file)
# 用csv.writer()函数创建一个writer对象。
writer.writerow(['电影','豆瓣评分'])
#调用writer对象的writerow()方法,可以在csv文件里写入一行文字 “电影”和“豆瓣评分”。
writer.writerow(['银河护卫队','8.0'])
#在csv文件里写入一行文字 “银河护卫队”和“8.0”。
writer.writerow(['复仇者联盟','8.1'])
#在csv文件里写入一行文字 “复仇者联盟”和“8.1”。
csv_file.close()
#写入完成后,关闭文件就大功告成啦

存储成csv格式文件和存储成Excel文件,这两种不同的存储方式需要引用的模块也是不同的。操作csv文件我们需要借助csv模块;

openpyxl 函数

操作Excel文件则需要借助 openpyxl 模块。

安装

pip install openpyxl

导入

from openpyxl import Workbook

创建文件

wb = Workbook()
#创建新的workbook(工作薄)对象,就是创建新的空的Excel文件。(创建文件对象)

创建完新的工作薄后,还得获取工作表。不然程序会懵逼,不知道要把内容写入哪张工作表里。

sheet = wb.active
#wb.active就是获取这个工作薄的活动表,通常就是第一个工作表。
sheet.title = 'new title'
#可以用.title给工作表重命名。

添加完工作表,我们就能来操作单元格,往单元格里写入内容。

sheet['A1'] = '漫威宇宙'
#把'漫威宇宙'赋值给第一个工作表的A1单元格,就是往A1的单元格中写入了'漫威宇宙'。

往单元格里写入内容只要定位到具体的单元格,如A1(根据Excel的坐标,A1代表第一列第一行相交的单元格),然后给这个单元格赋值即可。

如果我们想往工作表里写入一行内容的话,就得用到append函数。

row = ['鲁班七号','貂蝉','吕布']
#把我们想写入的一行内容写成列表,赋值给row。
sheet.append(row)
#用sheet.append()就能往表格里添加这一行文字。

如果我们想要一次性写入的不止一行,而是多行内容

rows = [['鲁班七号','貂蝉','吕布'],['是','王者','荣耀', '牛皮','英雄']]
#先把要写入的多行内容写成列表,再放进大列表里,赋值给rows。
for i in rows:
    sheet.append(i)
#遍历rows,同时把遍历的内容添加到表格里,这样就实现了多行写入。

成功写入后,我们千万要记得保存这个Excel文件,不然就白写啦!

wb.save('Marvel.xlsx')
#保存新建的Excel文件,并命名为“Marvel.xlsx”
#写入代码
from openpyxl import Workbook
wb = Workbook()
#利用openpyxl.Workbook()函数创建新的workbook(工作薄)对象,就是创建新的空的Excel文件。
sheet=wb.active
sheet.title='new title'
sheet['A1'] = '英雄'
rows= [['鲁班七号','貂蝉','吕布'],['是','王者','荣耀', '牛皮','英雄']]
for i in rows:
    sheet.append(i)#列表
print(rows)
wb.save('王者荣耀.xlsx')

字典写入Excel

l = {
    'name':'吕布',
    'age':18
}
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
sheet.title = '王者荣耀'
sheet['A1'] = '英雄'
sheet['B1'] = '价格'

n = 1
for k,v in l.items():
    sheet[f'A{n}'] = k
    sheet[f'B{n}'] = v
    n += 1
wb.save('王者荣耀.xlsx')

创建表

# 方式一:插入到最后(default)
>>> ws1 = wb.create_sheet("Mysheet")
# 方式二:插入到最开始的位置
>>> ws2 = wb.create_sheet("Mysheet", 0)

查看所有的sheet名

print(wb.sheetnames)
#['王者荣耀', '德玛西亚']
#读取单个单元格内容
from openpyxl import load_workbook
wb = load_workbook('王者荣耀.xlsx')
sheet = wb['德玛西亚']
print(sheet['A2'].value)
#读取一列内容
wb = load_workbook('王者荣耀.xlsx')
sheet = wb['德玛西亚']
line = sheet['A']
for i in range(len(line)):
    print(line[i].value)

QQ音乐邓紫棋歌曲评论爬取数据存储示例

import requests,json
from bs4 import BeautifulSoup
import openpyxl

wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = 'requests'
sheet['A1'] = 'name'
sheet['B1'] = 'url1'

url = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg'
header = {
    'Referer': 'https://y.qq.com/n/yqq/song/001X0PDf0W4lBq.html',

    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'
    }
commentid = ''
for i in range(5):
    params = {
        'g_tk': '5381',
        'loginUin': '1394551891',
        'hostUin': '0',
        'format': 'json',
        'inCharset': 'utf8',
        'outCharset': 'GB2312',
        'notice': '0',
        'platform': 'yqq.json',
        'needNewCode': '0',
        'cid': '205360772',
        'reqtype': '2',
        'biztype': '1',
        'topid': '1530858',
        'cmd': '8',
        'needmusiccrit': '0',
        'pagenum': str(i),
        'pagesize': '25',
        'lasthotcommentid': commentid,
        'domain': 'qq.com',
        'ct': '24',
        'cv': '10101010',
    }

    res = requests.get(url=url,headers=header,params=params)
    json_comment = res.json()
    # print(json_comment)
    list_comment = json_comment['comment']['commentlist']
    for comment in list_comment:
        info = comment['rootcommentcontent']
        user = comment['rootcommentnick']
        sheet.append([info,user])

wb.save('dzq.xlsx')

csv与openpyxl函数的更多相关文章

  1. PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数

    CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...

  2. jmeter参数化数据(_csvread函数、用户自定义变量等)

    以下是转载内容,仔细看过后,觉得用得最多的应该是csvread函数.用户自定义变量以及CSV DATA CONFIG控制器这几个,但是做练习之后,在结果树和聚合报告中怎么查看执行结果是个问题,没找到对 ...

  3. Numpy 系列(十一)- genfromtxt函数

    定义输入 genfromtxt的唯一强制参数是数据的源.它可以是字符串,字符串列表或生成器.如果提供了单个字符串,则假定它是本地或远程文件或具有read方法的打开的类文件对象的名称,例如文件或Stri ...

  4. 14、使用csv和excel存储豆瓣top250电影信息

        记得我们第三关的时候爬取了豆瓣TOP250的电影名/评分/推荐语/链接,现在呢,我们要把它们存储下来,记得用今天课上学的csv和excel,分别存储下来哦-       URL     htt ...

  5. Go Web:数据存储(2)——CSV文件

    存储到CSV文件中 1.内存存储 2.CSV文件存储 3.gob序列化存储 本文接上一篇:内存存储. 关于CSV文件的说明,见csv文件格式 当数据存储到了内存中,可以在需要的时候持久化保存到磁盘文件 ...

  6. Python笔记(十四):操作excel openpyxl模块

    (一)  常遇到的情况 就我自己来说,常遇到的情况可能就下面几种: 读取excel整个sheet页的数据. 读取指定行.列的数据 往一个空白的excel文档写数据 往一个已经有数据的excel文档追加 ...

  7. Jmeter CSV Data Set Config参数化

    在使用Jemeter做压力测试的时候,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的.这个时候我们就可以使用CSV Data Set Config实现参数化登录: 首先通过Te ...

  8. python 文件格式为 txt 转换成 csv 格式

    1  txt 文件的读取 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=Tr ...

  9. 建议42:使用pandas处理大型CSV文件

    # -*- coding:utf-8 -*- ''' CSV 常用API 1)reader(csvfile[, dialect='excel'][, fmtparam]),主要用于CSV 文件的读取, ...

随机推荐

  1. gulp的初阶使用方法(转)

    安装好gulp之后接下来就是使用了,此文主要介绍一些前端开发时常用的一些插件及其用法 http://www.imooc.com/article/tag/26/hot/12插件安装 安装本地服务器插件: ...

  2. 大话设计模式Python实现-策略模式

    策略模式(Strategy Pattern):它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户. 下面是一个商场活动的实现 #!/usr/bin/e ...

  3. [转帖]ASML EUV光刻机累计生产450万块晶圆:一台12亿元

    ASML EUV光刻机累计生产450万块晶圆:一台12亿元 来源驱动之家 ...网页被我关了 就这样吧. 截至目前,华为麒麟990 5G是唯一应用了EUV极紫外光刻的商用芯片,台积电7nm EUV工艺 ...

  4. 一步步在 github pages 上用 jekyll 搭建属于自己的博客

    序 我的专业与互联网没有太大关系,接触博客还是工作以后的事情.随着工作的经验增加,总想将自己的所思所得记录下来,毕竟,好记性不如烂笔头. 开始是将自己的总结在本地保存,但是本地有一个劣势,就是不能随时 ...

  5. 一个简单 System.Threading.Tasks.Dataflow.TransformBlock 示例

    直接贴代码了: using System; using System.Collections.Generic; using System.IO; using System.Threading.Task ...

  6. 【git】【Idea】git刷新获取远程分支列表,可以在idea上看到最新的远程分支列表

    [前提:本地项目是从GitLab或gitHub这些远程仓库上拉下来的 ,并且本地安装了git] ==================================================== ...

  7. Linux学习笔记之AIX系统上压缩与解压文件

    0x00 概述 AIX机器真难用,一时半会还真适应不了.   0x01 压缩tar 命令格式: # tar -cvf (或xvf)+文件名+设备 C:是本地到其他设备 x:是其他设备到本地 r:是追加 ...

  8. 2019 多点Dmalljava面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.多点Dmall等公司offer,岗位是Java后端开发,因为发展原因最终选择去了多点Dmall,入职一年时间了 ...

  9. 浅谈Nginx以及特性

    Nginx以及特性 1.Nginx是什么? Nginx是一个高性能的HTTP和反向代理轻量级web服务器,特点:占用内存少,处理并发能力强.Nginx专为性能优化而开发,性能是其最重要的考量 ,能经受 ...

  10. windows10风格 springboot vue.js html 跨域 前后分离 activiti 整合项目框架源码

    官网:www.fhadmin.org 此项目为Springboot工作流版本 windows 风格,浏览器访问操作使用,非桌面应用程序. 1.代码生成器: [正反双向](单表.主表.明细表.树形表,快 ...