yhw-miracle

数据存储为json和csv

痛点就是起点 writed in

本文为痛点就是起点原创文章,可以随意转载,但需注明出处。

进行 python 爬虫时,我们需要将数据存储起来。对于小数据量,我们可以存储到 json 文件或 csv 文件。

json存储

Python 对 json 文件的操作是通过 JSON 模块实现的,分为编码和解码两个过程。

编码是指将 python 对象转换为 json 对象,常用的函数是 dump() 和 dumps(),区别是 dump() 将 python 对象转换为 json 对象,并将 json 对象通过文件流写入文件,dumps() 函数是返回字符串。

dumps(obj,skipkeys=False,ensure_ascii=True,check_circular=True,allow_nan=True,cls=None,indent=None,separators=None,encoding='utf-8',default=None,sort_keys=False,**kw)
dumps(obj,skipkeys=False,ensure_ascii=True,check_circular=True,allow_nan=True,cls=None,indent=None,separators=None,encoding='utf-8',default=None,sort_keys=False,**kw)

解码是指将 json 对象转换为 python 对象,常用的函数为 load() 和loads(),区别是 load() 是将 json 对象转换为 python 对象,并将 python 对象写入到文件,而 loads() 是返回字符串。

load(fp,encoding=None,cls=None,object_hook=None,parse_float=None,parse_int=None,parse_constant=None,object_pairs_hook=None,**kw)
loads(s,encoding=None,cls=None,object_hook=None,parse_float=None,parse_int=None,parse_constant=None,object_pairs_hook=None,**kw)

csv存储

CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值),其文件是以纯文本形式存储表格数据。CSV 文件由任意数目的记录组成,记录间以换行符分隔,每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号和制表符。CSV 文件示例如下:

ID,Username,Password,Age,Country

1001,yhw,123456,24,China

1002,Mary,654321,25,USA

1003,Jack,123567,22,English

Python 通过 csv 库来读写 csv 文件。Python 写 csv 文件,需要用到 write 对象,然后按行写每一个记录;

import csv

header = ("ID", "Username", "Password", "Age", "Country")
rows = [(1001, "yhw", "123456", 24, "China"),
        (1002, "Mary", "654321", 25, "USA"),
        (1003, "Jack", "123567", 22, "English")]

with open("test3.csv", "w") as fp:
    fp_csv = csv.writer(fp)
    fp_csv.writerow(header)
    fp_csv.writerows(rows)
import csv

rows = [{"ID": 1001, "Username": "yhw", "Password": "123456", "Age": 24, "Country": "China"},
        {"ID": 1002, "Username": "Mary", "Password": "654321", "Age": 25, "Country": "USA"},
        {"ID": 1003, "Username": "Jack", "Password": "123567", "Age": 22, "Country": "English"}]
		
with open("test3.csv", "w") as fp:
	fp_csv = csv.DictWriter(fp, header)
    fp_csv.writeheader()
    fp_csv.writerows(rows)

Python 读取 csv 文件需要用到 reader 对象,然后同样是按行读取每一条记录。要读取特定字段信息,python 可以利用索引、命名元祖、字典这三种方式访问。

import csv
from collections import namedtuple

with open("test3.csv", "r") as fp:
    # 遍历记录
    fp_csv = csv.reader(fp)
    for row in fp_csv:
        print row

    # 索引
    fp_csv = csv.reader(fp)
    for row in fp_csv:
        print row[0]

    # 命名元组
    fp_csv = csv.reader(fp)
    header = next(fp_csv)
    Row = namedtuple("Row", header)
    for r in fp_csv:
        row = Row(*r)
        print row.Username, row.Password
        print row

    # 字典
    fp_csv = csv.DictReader(fp)
    for row in fp_csv:
        print row.get("Username")
json csv
知识总结

欢迎关注,我们一起进行认知迭代!


痛点就是起点

© 2016 - 2020 基于 jekyll | Github Pags | iconfont By yhw-miracle