文章目录

  • 前言
  • Python项目
    • 一哥python项目如何正确import
  • pip操作
    • 手动下载whl,并安装
  • 排序
    • 自定义列表排序函数
  • 字符串操作
    • 找到substring的索引
    • replace全部
  • 正则表达式(re)
    • 需要转义的字符
    • split多个空格
  • 抛出异常(Raise Exception)
  • 类(class)
    • 拷贝一个类实例
    • 重写(override) equals 和hashcode方法
    • str()和repr()
  • 集合操作(set)
    • 取交集
  • 时间戳解析
  • 小结

前言

创作开始时间:2021年11月8日21:12:36

系统性地整理一下Python经常用到的代码,该文章计划长期维护。

Python项目

一哥python项目如何正确import

1)要有这个文件:.vscode/settings.json

{"python.envFile": "${workspaceFolder}/dev.env",
}

2)要有这个文件:.vscode/launch.json

# 要包含这个
"env": {"PYTHONPATH": "${workspaceFolder}${pathSeparator}${env:PYTHONPATH}"},

3)要有dev.env文件:

PYTHONPATH=./main:./patch_parser:./pyutils:${PYTHONPATH}

4)还要调一下当前的python debug设置:

才可以!

pip操作

手动下载whl,并安装

1)直接访问:https://pypi.tuna.tsinghua.edu.cn/simple/

搜索自己想要的包,然后下载whl。

2)打开whl存放路径,运行:

pip install xxx-package.whl

就可以了。

参考:

  • https://How do I install a Python package with a .whl file? stackoverflow.com/questions/27885397/how-do-i-install-a-python-package-with-a-whl-file

排序

自定义列表排序函数

python3的方法如下:

from functools import cmp_to_keymylist = sorted(mylist, key=cmp_to_key(compare))# 这个是我为d4j bug name (数据格式:proj_id)排序定义的,仅供参考。
def compare(x, y):projx, idx = x.split("_")projy, idy = y.split("_")if projx > projy:return 1elif projx == projy:if int(idx) > int(idy):return 1elif int(idx) == int(idy):return 0else:return -1else:return -1

python2的话:

mylist = sorted(mylist, cmp=compare)

参考:

  • https://Sort a list of lists with a custom compare function stackoverflow.com/questions/5213033/sort-a-list-of-lists-with-a-custom-compare-function

字符串操作

找到substring的索引

# 正向索引
str.find()
str.index() # 找不到就抛出error# 反向索引
str.rfind()
str.rindex() # 找不到就抛出error

参考:

  • 5 Ways to Find the Index of a Substring in Python https://betterprogramming.pub/5-ways-to-find-the-index-of-a-substring-in-python-13d5293fc76d

replace全部

# 直接把字符串str中所有old替换成new
str = str.replace("old", "new")

参考:

  • https://www.Python replace()鏂规硶 runoob.com/python/att-string-replace.html

正则表达式(re)

需要转义的字符

参考:

  • 正则表达式转义特殊字符 https://blog.csdn.net/cjx529377/article/details/78287552

split多个空格

import rematches = re.findall(r'\S+', my_str.strip())

参考:

  • https://Split string on whitespace in Python [duplicate] stackoverflow.com/questions/8113782/split-string-on-whitespace-in-python

抛出异常(Raise Exception)

# 展示自定义信息
raise Exception('message you want to write')# 不展示信息也行
raise Exception# catch方案try:do_something()#raise Exceptionexcept Exception as e:print(e) # 输出exception信息raise # 最后抛出异常,也可以不抛出(注释这一行),继续执行后面的代码 do_other()#raise Exception('here is an exception')do_other()

参考:

  • Manually raising (throwing) an exception in Python https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python

类(class)

拷贝一个类实例

from copy import deepcopyc = C(4,5,'r'=2)
d = deepcopy(c)
  • How to copy a Python class instance if deepcopy() does not work? https://stackoverflow.com/questions/48338847/how-to-copy-a-python-class-instance-if-deepcopy-does-not-work

重写(override) equals 和hashcode方法

  • Hashing and Equality in Python https://eng.lyft.com/hashing-and-equality-in-python-2ea8c738fb9d 这篇文章讲的挺好的。

Don’t override __hash__ and __eq__ to force objects to hashable. Use immutable objects instead.
__eq__ and __hash__ must agree - equal objects must have equal hashes.
__hash__ must never change. The hash of an object is never re-computed once it is inserted.
Objects that implement logical equality (e.g. implement eq) must be immutable to be hashable. If an object has logical equality, updating that object would change its hash, violating rule 2.dict, list, set are all inherently mutable and therefore unhashable. str, bytes, frozenset, and tuple are immutable and therefore hashable.

示例:

 def __hash__(self):return hash(self.get_proj_id())def __eq__(self, other):return self.get_proj_id() == other.get_proj_id()

其他参考:

  • Python Hashes and Equality https://hynek.me/articles/hashes-and-equality/

str()和repr()

参考:

  • Python中str()与repr()函数的区别 https://www.jianshu.com/p/2a41315ca47e

集合操作(set)

取交集

A = {2, 3, 5}
B = {1, 3, 5}# compute intersection between A and B
print(A.intersection(B))A = {100, 7, 8}
B = {200, 4, 5}
C = {300, 2, 3}
D = {100, 200, 300}print(A.intersection(B, C, D))
  • Python Set intersection() https://www.programiz.com/python-programming/methods/set/intersection

时间戳解析

小结

慢慢补充吧。

创作结束时间:2021年11月8日21:22:51

【Cheatsheet】Python操作大全(避免重复造“轮子”)相关推荐

  1. 7个实用的Python自动化代码,别再重复造轮子了!

    关于Python有一句名言:不要重复造轮子. 但是问题有三个: 1.你不知道已经有哪些轮子已经造好了,哪个适合你用.有名有姓的的著名轮子就400多个,更别说没名没姓自己在制造中的轮子. 2.确实没重复 ...

  2. 不是“重复”造轮子,百度飞桨框架2.0如何俘获人心

    2016 年,百度 PaddlePaddle 打响了国产深度学习框架开源的第一枪. 2019 年 4 月,在 Wave Summit 深度学习开发者峰会上,首次发布了PaddlePaddle 的中文名 ...

  3. 还在重复造轮子?Java开发人员必知必会的20种常用类库和API

    介绍 一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不 ...

  4. Spring Boot并不重复“造轮子”

    2.1 Spring Boot简介 Spring Boot是由Pivotal团队提供的基于Spring的全新框架,其设计目的是简化Spring应用的搭建和开发过程.该框架遵循"约定大于配置& ...

  5. 不再重复造轮子,AI 给你推荐更好的代码,还没bug

    2020-09-18 14:47 导语:还在抠bug抠到怀疑人生? 作者 | 青 暮 编辑 | 丛 末 程序员的的代码大部分都不是如同写书法那般一挥而就,而需要反复地抠bug,抠到怀疑人生. 剑桥大学 ...

  6. 校验输入框的内容不能重复_答应我,用了这个jupyter插件,别再重复造轮子了

    以下文章来源于Python大数据分析 ,作者费弗里 1 简介 在使用Python.R等完成日常任务的过程中,可能会经常书写同样或模式相近的同一段代码,譬如每次使用matplotlib绘制图像的时候可以 ...

  7. 程序员到底要不要重复造轮子?

    分享一波:程序员赚外快-必看的巅峰干货 关于这个话题,现在这里阐述立场:就公司工作而言,不建议重复造轮子.就个人技术而言,强烈建议造轮子! 程序员圈子里流行这么一句话:"不要重复造轮子&qu ...

  8. json转string工具_不要再重复造轮子了,这款开源工具类库贼好使!

    Hutool是一个小而全的Java工具类库,它帮助我们简化每一行代码,避免重复造轮子.如果你有需要用到某些工具类的时候,不妨在Hutool里面找找.本文总结了平时常用的16个工具类,希望对大家有所帮助 ...

  9. 微软 CEO 萨提亚·纳德拉:不要重复造轮子,提升技术强密度

    扫描二维码,查看精彩回顾 据中国互联网络信息中心(CNNIC)发布的第 44 次<中国互联网络发展状况统计报告>显示,截至 2019 年 6 月,我国网民规模达 8.54 亿,较 2018 ...

  10. 重复造轮子,对此你的看法

    关于这个话题,现在这里阐述立场:就公司工作而言,不建议重复造轮子.就个人技术而言,强烈建议造轮子! 程序员圈子里流行这么一句话:"不要重复造轮子".它的原文是:"Stop ...

最新文章

  1. The Third Revolution in Sequencing Technology
  2. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错
  3. 高性能计算战火再度升级,科技综合实力竞争少不了它
  4. mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...
  5. Shell语法—— while 条件语句
  6. .NET Core log4net 使用
  7. [Java基础]自动装箱和拆箱
  8. 【渝粤题库】国家开放大学2021春2246社会工作概论题目
  9. mysql show
  10. 树莓派进阶之路 (029) - 语音识别模块 LD3320(原创)
  11. Cinesamples CineBrass Descant Horn Mac(号角音色库)
  12. 广西中专机器人应用与维护_2020年广西职业院校技能大赛中职组 智能家居安装与维护和机器人技术应用在柳州市一职校落幕...
  13. Galaxy+note3+android+5.0,三星NOTE3 SM-N9008S原厂刷机包5.0Rom固件ZCSCQD1线刷包
  14. 解决谷歌地图偏移问题
  15. Windows内网渗透之信息收集
  16. 经验分享 怎么修改PDF文件中的图片以及文字
  17. isSelected() 的使用
  18. “CSIG 计算机视觉前沿 · 研讨会”于6月28日在百度举行
  19. WPF 使用Image控件显示图片
  20. 想成为年薪30W+的运营,你必须具备这4个“运营思维”

热门文章

  1. 什么是商业模式(Business Model)?
  2. Linux下安装SVN服务端
  3. 大数据--商品推荐系统项目实现(下)
  4. CSS学习day01---XHTML和HTML的重要区别
  5. 到2022年,奥升德将增加220千吨己二腈(ADN)产能
  6. bp神经网络是什么算法,BP神经网络的基本思想
  7. Android Framework入门介绍
  8. matlab里表示颜色,求助:怎么画用颜色表示数值的图
  9. PIE-engine 教程 ——坡度、坡向、山阴、粗糙度计算和显示案例分析
  10. flickr之我们心中的点子