标签: python

python字典读取不报错, 用 get(),s.get(“age”,””) ,自定义类的方式,每次把字典先格式化一下,无对应值返回None ,在 Python 的collections工具模块中,有一个defaultdict实现了类似的事情。我们看它的使用方法

我们要获取name和对应age

for s in ss[“data”]:
#这么写
name = s[“name”]
age = s[“age”]
#还是这么写
name = jsonpath(s,”$..name”)[0]
age = jsonpath(s,”$..age”)[0]

# 这么写给
name = glom(s,’name’)

age = glom(s,’age’)

都会报错:
我们只能用 get()
name = s.get(“name”,””)
age = s.get(“age”,””)
每次这么写感觉会很麻烦,后来发现可以自定义类的方式,每次把字典先格式化一下,无对应值返回None

我们自定义一个类,继承dict,然后实现它的missing方法:

class OurDict(dict):
def missing(self, key):
return None

a = OurDict({‘a’: 1, ‘b’: 2})
print(a[‘x’])

在在后来,在 Python 的collections工具模块中,有一个defaultdict实现了类似的事情。我们看它的使用方法

from collections import defaultdict

a = defaultdict(str)
a[‘a’] = 1
a[‘b’] = 2
print(a)
print(a[‘x’])
print(a)
a = defaultdict(str)接收一个函数,让a变量成为一个defaultdict类型的对象,它可以像普通字典一样被赋值和读取。

但是当你读取一个不存在的 key 时,它会自动生成一个默认值,并把默认值和这个 key 插入到字典中。这个默认值取决于你在defaultdict传入的参数。如果传入的是str那么默认值就是空字符串,如果是int那么默认值就是0.当然你也可以传入自定义的一个函数,从而控制这个默认值。

Python 删除字典元素的4种方法, Python字典的clear()方法(删除字典内所有元素),pop()方法(删除字典给定键 key 所对应的值,返回值为被删除的值),popitem()方法(随机返回并删除字典中的一对键和值),del 全局方法(能删单一的元素也能清空字典,清空只需一项操作)

1. Python字典的clear()方法(删除字典内所有元素)
dict = {‘name’: ‘我的博客地址’, ‘alexa’: 10000, ‘url’: ‘http://blog.csdn.net/uuihoo/’}
dict.clear(); # 清空词典所有条目
1
2
2. Python字典的pop()方法(删除字典给定键 key 所对应的值,返回值为被删除的值)
site= {‘name’: ‘我的博客地址’, ‘alexa’: 10000, ‘url’:’http://blog.csdn.net/uuihoo/’}
pop_obj=site.pop(‘name’) # 删除要删除的键值对,如{‘name’:’我的博客地址’}这个键值对
print pop_obj # 输出 :我的博客地址
1
2
3
3. Python字典的popitem()方法(随机返回并删除字典中的一对键和值)
site= {‘name’: ‘我的博客地址’, ‘alexa’: 10000, ‘url’:’http://blog.csdn.net/uuihoo/’}
pop_obj=site.popitem() # 随机返回并删除一个键值对
print pop_obj # 输出结果可能是{‘url’,’http://blog.csdn.net/uuihoo/’}
1
2
3
4. del 全局方法(能删单一的元素也能清空字典,清空只需一项操作)
site= {‘name’: ‘我的博客地址’, ‘alexa’: 10000, ‘url’:’http://blog.csdn.net/uuihoo/’}
del site[‘name’] # 删除键是’name’的条目
del site # 清空字典所有条目
1
2
3
————————————————

版权声明:本文为CSDN博主「uuihoo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

怎么查看Python pip扩展库所有可用安装版本

C:\Users\jwp>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple moviepy==10000
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
ERROR: Could not find a version that satisfies the requirement moviepy==10000 (from versions: 0.2.1.6.3.linux-i686, 0.2.1, 0.2.1.1, 0.2.1.2, 0.2.1.3,
0.2.1.4, 0.2.1.5, 0.2.1.6, 0.2.1.6.1, 0.2.1.6.2, 0.2.1.6.3, 0.2.1.6.4, 0.2.1.6.5, 0.2.1.6.7, 0.2.1.6.8, 0.2.1.6.9, 0.2.1.6.91, 0.2.1.6.92, 0.2.1.6.93,
0.2.1.7, 0.2.1.7.2, 0.2.1.7.3, 0.2.1.7.8, 0.2.1.7.9, 0.2.1.7.10, 0.2.1.7.11, 0.2.1.7.12, 0.2.1.7.13, 0.2.1.7.14, 0.2.1.7.15, 0.2.1.7.16, 0.2.1.7.17,
0.2.1.7.18, 0.2.1.7.19, 0.2.1.7.20, 0.2.1.7.21, 0.2.1.7.22, 0.2.1.8, 0.2.1.8.1, 0.2.1.8.2, 0.2.1.8.3, 0.2.1.8.4, 0.2.1.8.5, 0.2.1.8.6, 0.2.1.8.7, 0.2.
1.8.8, 0.2.1.8.9, 0.2.1.8.10, 0.2.1.8.11, 0.2.1.8.12, 0.2.1.9, 0.2.1.9.1, 0.2.1.9.2, 0.2.1.9.3, 0.2.1.9.4, 0.2.1.9.5, 0.2.1.9.7, 0.2.2, 0.2.2.1, 0.2.2
.2, 0.2.2.3, 0.2.2.4, 0.2.2.5, 0.2.2.6, 0.2.2.7, 0.2.2.8, 0.2.2.9, 0.2.2.10, 0.2.2.11, 0.2.2.12, 0.2.2.13, 0.2.3.1, 0.2.3.2, 0.2.3.3, 0.2.3.4, 0.2.3.5
, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 2.0.0.dev1, 2.0.0.dev2)
ERROR: No matching distribution found for moviepy==10000

python flask 获取 get post 参数

from flask import Flask, jsonify
from flask import request
app = Flask(__name__)

@app.route(‘/’, methods=[‘GET’, ‘POST’])
def hello_world():
print(‘请求方式为——->’, request.method)
args = request.args.get(“name”) # 获取 get 参数
form = request.form.get(‘data’) # 获取 post 参数
# main(form) # 调用我们的逻辑函数
get_html(form)
print(“=========成功 生成 index.html================”)
return jsonify(args=args, form=form)

if __name__ == ‘__main__’:
app.run(host=”0.0.0.0″, port=5800, debug=True)

Python 目录文件夹路径操作,读取获取,创建,判断是否存在 os.mkdir(),os.path.exists(),os.getcwd(), os.chdir

os.path.exists(),os.getcwd(), os.chdir

vim ostest.py

import os

if not os.path.exists(‘testos’):

os.mkdir(‘testos’) #如果没有则建立文件路径

print (os.getcwd())

os.chdir(‘/’)

print os.getcwd()

——————

创建目录

在Python中可以使用os.mkdir()函数创建目录(创建一级目录)。

其原型如下所示:

os.mkdir(path)

其参数path 为要创建目录的路径。

例如要在D盘下创建hello的目录

>>> import os

>>> os.mkdir(‘d:\hello’)

可以使用os.makedirs()函数创建多级目录。

其原型如下所示:

os.makedirs(path)

其参数path 为要创建目录的路径。

如在D盘下创建books的目录,books目录下在创建book目录

>>> import os

>>>os.makedirs(‘d:\\books\\book’)

———————–

os.path.exists():判断文件是否存在

————————

os.getcwd():用于返回当前工作目录。 参数:无; 返回值:返回当前进程的工作目录

os.chdir(path):用于改变当前工作目录到指定的路径。格式:os.chdir(path):其中path为切换到的新路径。

pipreqs(找当前项目依赖的包)生成requirements.txt文件

pipreqs(找当前项目依赖的包)

1.安装

pipreqs可以帮你找到当前项目的所有组件及其版本。就是当别人给你一个程序的时候,你要在自己电脑上运行起来,就需要安装程序所依赖的组件,总不能自己一个一个找吧。

# 安装
pip3 install pipreqs

2.使用步骤

# 使用步骤
1.在项目根目录下执行命令
pipreqs ./ –encoding=utf-8
2.可以看到生成了requirements.txt文件
3.执行下面代码就会把项目用到的所有组件装上
pip3 install -r requirements.txt

3.效果

# requirements.txt
Flask_Migrate==2.3.1
redis==3.0.1
Flask==1.0.2
alembic==1.0.7
Flask_Script==2.0.6
Flask_SQLAlchemy==2.3.2
Flask_Session==0.3.1
SQLAlchemy==1.2.17

Python 截取字符串的方法

Python 提供了很多截取字符串的方法,被称为“切片(slicing)”。

模版如下:

string[start: end: step]
其中,

start:起点位置,子字符串的起始索引。该索引处的字符包含在子字符串中。start 为空时则默认为 0。

end:终点位置,子字符串的终止索引。该索引处的字符不包括在子字符串中。end 为空时,或者指定的值超过字符串的长度,则默认它等于字符串的长度。

step:步长,当前字符之后和目标字符之间的距离。step 为空时,则默认值为 1。

模版

string[start:end]:获取从 起点位置 到 终点位置 – 1 的所有字符

string[:end]:获取从 字符串开头 到 终点位置 – 1 的所有字符

string[start:]:获取从 起点位置 到字符串结尾的所有字符

string[start:end:step]:获取从 起点位置 到 终点位置 – 1 的,每个之间距离 步长 的所有字符

示例

获取字符串的前 5 个字符
string = “freeCodeCamp”
print(string[0:5])
输出:

> freeC
注意:print(string[:5]) 和 print(string[0:5]) 返回的结果一样

获取从第 3 个字符开始,长度为 4 的截取字符串
string = “freeCodeCamp”
print(string[2:6])
输出:

> eeCo
请注意,起点或终点位置索引可能为负数。负索引的意思是从字符串的末尾开始而不是从开头开始(即从右到左)开始计数。索引-1 代表字符串的最后一个字符,-2 代表倒数第二个字符,依此类推……

获取字符串的最后一个字符
string = “freeCodeCamp”
print(string[-1])
输出:

> p
获取字符串的末尾 5 个字符
string = “freeCodeCamp”
print(string[-5:])
输出:

> eCamp
获取一个截取字符串,包括除了末尾 4 个和开头第一个字符的所有字符
string = “freeCodeCamp”
print(string[1:-4])
结果:

> reeCode
更多示例

str = “freeCodeCamp”

print str[-5:-2] # prints ‘eCa’
print str[-1:-2] # prints ‘’ (empty string)
每个字符之间间隔一个索引
string = “freeCodeCamp”
print(string[::2])
结果:

> feCdCm