list 列表相关
list 中最小值、最大值
1 | import operator |
list 中连续元素之间的差
1 | from itertools import islice |
删除列表中的重复元素
下面这种方法不能维持顺序:
1 | x = [1, 8, 4, 5, 5, 5, 8, 1, 8] |
下面的方法,可以维持顺序:
1 | from collections import OrderedDict |
并行遍历2个列表
1 | a = [1, 2, 3] |
合并列表值
输入的两个数组,输出一个是数组&值相加或者相乘:
1 | # input |
参考:
- Python中的常用代码
字典处理
字典做交、差、并
1 | a={'name':'michael','age':"27",'sex':'male'} |
需要注意的是,当字典的值有字典时,a.items()-b.items()
这种方式会报错 TypeError: unhashable type: 'dict'
;
参考:
- cookbook-查找两字典的相同点
- 简书-Python 字典操作进阶
字典的Key与Value对调
1 | m = {'A': 1, 'B': 2, 'C': 3} |
参考:
- 2gua-几个Python代码片段
合并字典值
1 | from collections import Counter |
字典的增加
用 update
方法往已有字典中增加键值对:
1 | deploy_info=dict() |
字符串相关
索引
1 | tag='hx/mitaka_compute/12.0.0' |
参考:
- 在Python中查找所有出现的子字符串
将百分号的百分比字符串转为数字
1 | p="75%" |
参考:
- Convert to numeric Python
剔除分隔符
通常做法:
1 | ''.join('A|B|C|D|E|F|G'.split('|')) |
用 itertools.islice
,因为可以节选字符串:
1 | import itertools |
美观打印
1 | import pprint as pp |
width参数指定一行上最大的字符数。设置width为1确保字典打印在单独的行
文件读写
基本文件读 txt
1 | # Note: rb opens file in binary mode to avoid issues with Windows systems |
json 读写json文件
- json.loads()是将str转化成dict格式,json.dumps()是将dict转化成str格式。
- json.load()和json.dump()也是类似的功能,只是与文件操作结合起来了。
1 | # 解码 |
在编码JSON的时候,还有一些选项很有用。 如果你想获得漂亮的格式化字符串后输出,可以使用 json.dumps()
的indent
参数。 它会使得输出和pprint() 函数效果类似:
1 | print(json.dumps(data)) |
保存为 json 文件:
1 | # 编码 |
- CookBook-6.2 读写JSON数据
- 简书-Python: json模块实例详解
- 官宣-json — JSON encoder and decoder
- Reading JSON file with Python 3
- What is the difference between json.load() and json.loads() functions in Python?
时间日期
基本时间(time)和日期(date)
1 | import time |
字符串和日期的相互转换
strptime 是将字符串转换为 datetime,其实这个方法的全称是 “string parse time”,叫做字符串解析成时间,重点在解析(parse):
1 | from datetime import datetime |
strftime 是将 datetime 转换为字符串,全称是 “string format time”,翻译过来就是将字符串的形式来格式化时间,重点在格式化(format),使之以一种可读的字符串形式返回:
1 | from datetime import datetime |
参考:
- 3分钟学会一个小技巧
编码相关
Python Requests 编码问题
- requests github issue
下载
Python下载文件
- urlretrieve
Python根据url下载目录或者文件
1 | def download_package(self, package_url): |
数据处理
Python Pandas处理Excel数据
逐行处理数据 iterrows
1 | for idx, row in data.iterrows(): |
Pandas追加模式写入csv文件
1 | data = pd.DataFrame([[1,2,3]]) |
Python-CSV-Excel
- Python Pandas iterrows method
1 | for idx, row in data.iterrows(): |
to_csv表格中文乱码
ipython中直接打印df,中文没有乱码,但是to_csv
方法存储时,中文有乱码。
1 | df.to_csv('file.csv',encoding='utf-8-sig') |
参考:
- Pandas df.to_csv(“file.csv” encode=“utf-8”) still gives trash characters for minus sign
- 关于pandas中,to_csv函数输出的utf8数据用Excel打开是乱码
itero
看题目:
- python数据处理,字典生成的一个问题答案中有位前辈用这个用的炉火纯青啊!
Shell/Linux 操作相关
Python运行shell命令的函数:
1 | def run(cmd_str, fatal=True): |
调用外部的命令
1 | # |
Python 3.5引进了一个新的run函数,它的行为与call和check_output很相似。如果你使用的是3.5版本或更高版本,看一看run的文档,里面有一些有用的例子。否则,如果你使用的是Python 3.5以前的版本或者你想保持向后兼容性,上面的call和check_output代码片段是你最安全和最简单的选择
参考:
计算文件的校验值
可以计算文件的 md5
、sha256
等值
1 | # https://pymotw.com/3/hashlib/index.html#module-hashlib |
性能相关
脚本的运行时间
1 | import time |
1 | import timeit |
计算运行时间
1 | class Timer(object): |
参考:
- CSDN- python代码片段
目录、路径相关
基本目录文件操作
1 | import os |
参考:
- 斗大的熊猫-收集的有用的 Python 代码片段
Python 删除文件夹
1 | def onerror(func, path, exc_info): |
参考:
- shutil.rmtree fails on Windows with ‘Access is denied’
Python 切换目录
执行完,返回之前目录1
2
3
4
5
6
7
8
9import contextlib
def cdir(path):
prev_cwd = os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(prev_cwd)
用法:1
2with cdir(path):
func()
搜索指定目录下的文件
将指定目录及其子目录下的文件搜索出来:
1 | def find_file(start_path, name): |
只列出文件夹下的文件夹
1 | [ name for name in os.listdir(thedir) if os.path.isdir(os.path.join(thedir, name)) ] |
- How to list only top level directories in Python?
Python Path相关问题
1 | os.path.split(r"C:\foo\bar\file_name.txt") |
- 格式化文件路径
数据库
MySQL 数据库
1 | db = MySQLdb.connect("localhost","your_username","your_password","your_dbname") |
参考:
- 斗大的熊猫-最常用的Python代码片段
MongoDB
1 | uri="mongodb://admin:admin@xxx.xxx.xxx.xxx:27017,xxx.xxx.xxx.xxx:27018,xxx.xxx.xxx.xxx:27019/test" |