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

  • 相关阅读:
    tar (child): gzip: Cannot exec: No such file or directory
    通过应用数字格式来修复文本格式的数字
    Logback
    Transport
    nginx note
    docker note
    k8s note
    spring boot properties
    Windows 和 Linux 的文件名
    安装配置ubuntu的web项目(新)
  • 原文地址:https://www.cnblogs.com/Caiyundo/p/12512605.html
Copyright © 2011-2022 走看看