zoukankan      html  css  js  c++  java
  • 常用数据存储的介绍和使用

    本文内容介绍python和如下数据存储交互的基本使用:

      文件存储:TXT、JSON、CSV

      关系型数据库:Mysql(pymysql模块)

      非关系型数据库:MongoDB(pymongo模块)、Redis(redis模块)

    1. 文本存储;简单实例,爬取知乎话题、答者和回答内容保存到txt文件中

    ## 文本存储;简单实例,爬取知乎话题、答者和回答内容保存到txt文件中
    from pyquery import PyQuery as pq
    import requests
    
    url = 'https://www.zhihu.com/explore'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
    }
    html = requests.get(url=url, headers=headers).text
    
    doc = pq(html)
    items = doc.find('.ExploreCollectionCard-contentItem').items()
    for item in items:
        question = item('.ExploreCollectionCard-contentTitle').text()
        author = item('.ExploreCollectionCard-contentExcerpt').text().split('')[0]
        answer = ''.join(item('.ExploreCollectionCard-contentExcerpt').text().split('')[1:])
        with open('zhihu_explore.txt', 'a', encoding='utf-8') as f:
            f.write('
    '.join([question, author, answer]))
            f.write('
    ' + '=' * 50 + '
    ')
    '''
    保存文本内容:
    一年时间可以熟背新概念3.4册课文吗?
    lu luce
    可以的。。我成功完成了。方法是王江涛六步法。。请看我这个英语学习方法人肉实验员的人肉实验结果。人肉实验者飘过。。。我检查了我的学习日志。一年左右时间背完新概念1234四册的飘过。从2016年12月开始,背到2018年三月份。从2016年12月开始,到2017年4…
    ==================================================
    有没有什么可以放昵称的超级好看的符号?
    雨停花落故人散
    超级可爱呀⁰¹²³⁴⁵⁶⁷⁸⁹ ¹⁹⁹⁴ ²⁰⁰⁷ ¹⁹⁹⁵ ²⁰⁰⁸ ¹⁹⁹⁶ ²⁰⁰⁹ ¹⁹⁹⁷ ²⁰¹⁰ ¹⁹⁹⁸ ²⁰¹¹ ¹⁹⁹⁹ …
    ==================================================
    有哪些推翻了人们对历史的认识的考古发现?
    清源文化遗产
    2002年,在青海喇家遗址,考古队员们意外发现了4000年前扣翻在地上的一碗面条凑近看这只倒扣的齐家文化篮纹红陶碗,碗内的残留物中保留着清晰可见的团状细条卷曲痕迹的黄色物质,风化很严重,只残留表皮一点薄薄的物质经科学鉴定,发现其中的主要成分和粟、…
    ==================================================
    白酒真的好喝么?
    许公子
    送你一份酒水清单,全部喝一遍再来问好不好喝。 两年前,我滴酒不沾,喝白酒只有一个味辣。 初尝白酒是抖音里那杯“情人的眼泪”。 谈不上好喝,也说不上难喝,主要是内心那点文艺作祟;随着工作压力的增大以及工作需要,喝酒、品酒变成了日常,才发现酒…
    ==================================================
    传统方法BM25解决短文本相似度问题
    刘聪NLP
    之前介绍过TF-IDF计算短文本相似度,见刘聪NLP传统方法TF-IDF解决短文本相似度问题,想着就把这一系列都介绍完吧,也算是自己的归纳总结,今天就介绍一下如何使用BM25算法计算短文本相似度。上一篇短文本相似度算法研究文章中,我们举过这样一个场景,在…
    ==================================================
    香侬读 | ReZero: 使用加权残差连接加速深度模型收敛
    香侬科技
    论文标题ReZero is All You Need: Fast Convergence at Large Depth论文作者Thomas Bachlechner, Bodhisattwa Prasad Majumder, Huanru Henry Mao, Garrison W. Cottrell, Julian McAuley 论文链接https://arxiv.org/abs/2003.04887代码连接https://github.com/majumderb/rezero…
    ==================================================
    100个素材网站,这辈子都用不完
    知乎用户
    好久没给大家分享资源了,是不是最近也是非常饥渴。好东西就要分享才对,所以以下资源就当是福利啦! 谷歌扁平化设计手册
    https://material.google.com/
    国内学习网站
    http://www.wanyouyingli.com/
    常见函数图表
    http://easings.net/zh-cn
    国内畅游视觉设计中心
    …
    ==================================================
    你都见过什么奇奇怪怪的网站?
    林简明
    我的收藏夹小金库又要大出血了!(宝藏男孩出击!末尾有彩蛋~1、马克思主义文库我们以前总开玩笑说“马特好难,考的都是什么玩意”。但你不知道有一群默默无闻的群体,他们不求回报,一心为了这份事业耕耘着。网站收集来自全世界过去、现在以及未来为共产…
    ==================================================
    '''
    输出文件内容

    2. JSON文件存储

    ## JSON文件存储
    ## JSON中两种常用的类型:对象和数组,可以理解为python中的字典和列表,两者可以互相嵌套
    ## 读取JSON,JSON字符串的数据一定要用双引号表示,否则会解析失败
    import json
    
    str = '''
    [
    {"name":"dmr", "age":"25", "score":"80"},
    {"name":"asx", "age":"23", "score":"81"}
    ]
    '''
    print(type(str))
    str = json.loads(str)
    print(type(str))
    # 读取value,通过字典的get方法,当key不存在时,不会报错,会返回None
    print(str[0]['name'])
    print(str[0].get('age'))
    
    '''
    输出内容:
    <class 'str'>
    <class 'list'>
    dmr
    25
    '''
    
    
    ## 写入JSON,字典转换成JSON字符串格式,json会自动识别格式并修正转换,如单引号改为双引号
    import json
    
    d = {
        'name': ['dmr', 'asx', '逗比'],
        'age': '25',
    }
    # 把特定格式数据转换成JSON格式
    data_json = json.dumps(d)
    # indent,指定缩进字符量
    data_json2 = json.dumps(d, indent=2)
    # ensure_ascii使内容可以以中文显示
    data_json3 = json.dumps(d, indent=2, ensure_ascii=False)
    print(data_json)
    print(data_json2)
    print(data_json3)
    # 保存JSON内容到文件中
    with open('data.json', 'w', encoding='utf-8') as f:
        f.write('
    '.join([data_json, data_json2, data_json3]))
    
    '''
    输出内容:
    {"name": ["dmr", "asx", "u9017u6bd4"], "age": "25"}
    {
      "name": [
        "dmr",
        "asx",
        "u9017u6bd4"
      ],
      "age": "25"
    }
    {
      "name": [
        "dmr",
        "asx",
        "逗比"
      ],
      "age": "25"
    }
    '''

    3. CSV文件,以纯文本形式存储表格数据

    ## CSV文件,以纯文本形式存储表格数据
    ## 写入
    import csv
    
    with open('data.csv', 'w') as csvf:
        # 获得文件句柄
        writer = csv.writer(csvf)
        # 获得文件句柄并指定分隔符
        writer2 = csv.writer(csvf, delimiter=' ')
        # 写入行内容
        writer.writerow(['id', 'name', 'age'])
        writer.writerow(['0001', 'dmr', '25'])
        writer.writerow(['0002', 'asx', '23'])
        writer.writerow(['0003', 'scy', '26'])
        writer2.writerow(['0004', 'test', '22'])
        writer2.writerow('=================================')
        # 写入多行
        writer2.writerows([['id', 'name', 'age'], ['0001', 'dmr', '25'], ['0003', 'scy', '26']])
        writer2.writerow('=================================')
    
        # 通过字典形式进行文件添加内容
        fieldnames = ['id', 'name', 'age']
        writer3 = csv.DictWriter(csvf, fieldnames=fieldnames)
        # 生成fieldnames的首行
        writer3.writeheader()
        # 写入内容
        writer3.writerow({'id': '0001', 'name': 'dmr', 'age': '25'})
        writer3.writerow({'id': '0002', 'name': 'asx', 'age': '23'})
        writer3.writerow({'id': '0003', 'name': 'scy', 'age': '26'})
    
    
    
    ## 读取
    import csv
    
    with open('data.csv', 'r', encoding='utf-8') as csvf:
        reader = csv.reader(csvf)
        print(reader)
        for row in reader:
            print(row)
    
    
    # 用pandas模块进行文件读取
    import pandas as pd
    
    data = pd.read_csv('data.csv')
    print(data)

    4. 关系型数据库mysql

      pymysql模块:https://www.cnblogs.com/Caiyundo/p/9578925.html

    5. 非关系型数据库mongodb、redis

      pymongo模块:https://www.cnblogs.com/Caiyundo/p/9480265.html

      redis模块:https://www.cnblogs.com/Caiyundo/p/9561548.html

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/Caiyundo/p/12512605.html
Copyright © 2011-2022 走看看