常用数据存储的介绍和使用

Posted caiyundo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用数据存储的介绍和使用相关的知识,希望对你有一定的参考价值。

 

本文内容介绍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

以上是关于常用数据存储的介绍和使用的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

JDK常用数据结构

sql 这些代码片段将演示如何逐步使用PolyBase。你应该有一个blob存储和存储秘密方便

常用Javascript代码片段集锦

Jacoco和Tycho surefire的Eclipse RCP插件代码介绍

请介绍下Android的数据存储方式。