python 拼音排序_Python实现针对中文排序的方法
python 拼音排序_Python实现针对中文排序的方法 本文实例...
python 拼音排序_Python实现针对中文排序的方法 本文实例...
python sort和sorted的区别,使用和坑
sort和sorted区别:
(本文根据B站up主码农高天的视屏整理)
sort跟sorted都是python自带的排序函数,两者的使用方法基本一致。
最大的区别是sort会改变原有列表,而sorted不会改变原有列表并且会返回一个新列表。
sort 和sorted的使用:
a = [1,25,2,5,4,3,6]
b = sorted(a)
print(a)
print(b)
a.sort()
print(a)
打印结果如下,sort改变了原有列表,而sorted没有
我们在使用sort和sorted的时候可以搭配匿名函数使用,这种方法使用的频率较高,一定要掌握
# lst[lst] with sort
a = [[‘xueling’,0],[‘yujie’,2],[‘aitty’,1],[‘xls’,2]]
a.sort(key=lambda x:x[1],reverse=True)
print(a)
# 通过匿名函数来指定key,实现对lst中第二项进行排序
运行结果: [[‘yujie’, 2], [‘xls’, 2], [‘aitty’, 1], [‘xueling’, 0]]
往高处延伸
有时候我们会遇到两次排序的问题:
1,先根据数的次数进行排序
2,当数字相同时根据数的大小从大到小进行排序
我们可以这样写:
b = [2,3,3,2,3,1,4]
b = sorted(b,key=lambda x:(b.count(x),x),reverse=True)
print(b)
运行结果:[3, 3, 3, 2, 2, 4, 1]
sort 的坑
当然,我们也可以用sort来写
b.sort(key=lambda x:(b.count(x),-x))
print(b)
运行结果:[4, 3, 3, 3, 2, 2, 1]
我们发现使用sort运行的结果是错误的,这其实是sort本身编写的问题,涉及底层的架构,所以我们在写sort发现错误的时候,可以尝试把它改写成sorted来判断是不是我们代码本身的错误,sorted是不会错的。
这种错误,其实只会在sort二次排序时才会出现,像key=lambda x:x[1]这样的是不会出现排序错误的。
sort的这种错误,可以说是python的一个bug吧。
# 测试匹配中文信息
def TestReChinese( ):
source = u” 数据结构模版—-单链表SimpleLinkList[带头结点&&面向对象设计思想](C语言实现)”
temp = source.decode(‘utf8’)
print “同时匹配中文英文”
print “————————–”
xx = u”([\w\W\u4e00-\u9fff]+)”
pattern = re.compile(xx)
results = pattern.findall(temp)
for result in results:
print result
print “————————–”
print
print
print “只匹配中文”
print “————————–”
xx = u”([\u4e00-\u9fff]+)”
pattern = re.compile(xx)
results = pattern.findall(temp)
for result in results:
print result
print “————————–”
if __name__ == “__main__” :
# 测试正则表达式
reload(sys)
sys.setdefaultencoding(“utf-8”)
TestReChinese( )
Flask jinja2模板中if语句使用详解 if条件判断语句: ...
python文件不存在时创建文件_python判断文件和文件夹是否存...
scrapy startproject 项目名
cd 项目名, # 进入项目,此目录是创建爬虫项目时通过模板自动生成。
scrapy genspider 文件名 域名
模糊搜索查找
{title: {$regex:/00|jk/}}
忽略转义大小写等模糊查找 {title: {$regex:/hd/,$options:”imsx”}}
{$or:[{title: {$regex:/hd/,$options:”imsx”}} ,{description: {$regex:/jk/,$options:”imsx”}} ]}
多条件or或者查找
{ $or : [{“title” : /.*波多.*/i}, {“description” : /.*jk.*/i}] }
时间范围内
({“START_TIME”:{“$gte”:ISODate(“2021-08-03 07:59:06″),”$lte”:ISODate(“2021-09-01 08:30:46”)}})
复合条件查找
关系数据库:select * from where(state1=11 and state2=22) or value >300
MongoDB数据库:db.getCollection(‘testOrAnd’). find(
{$or:[{$and:[{“state1”:11},{“state2”:22}]},{“value”:{$gte:300}} ] }
)
准确查询
db.user.find({$or:[{name:{$eq:’小博’}},{name:{$eq:’测试小博’}}]})
$exists:查询是否存在某个字段
因为mongodb是非关系型数据库,因此,每条记录可能包含的字段都不一样,不同的数据之间可能存在一些字段没有写入值,想要筛选某个字段是否存在的时候,就可以使用$exists去进行筛选。
存在
db.getCollection(“user”).find({age:{$exists:1}})
db.getCollection(“user”).find({age:{$exists:true}})
不存在
db.getCollection(“user”).find({age:{$exists:0}})
db.getCollection(“user”).find({age:{$exists:false}})
参考链接:https://huaweicloud.csdn.net/63356eadd3efff3090b56b38.html
$regex操作符的介绍
MongoDB使用$regex操作符来设置匹配字符串的正则表达式,使用 PCRE(Pert Compatible Regular Expression)作为正则表达式语言。
regex操作符
{
{
{
正则表达式对象
{
$regex与正则表达式对象的区别:
在$in操作符中只能使用正则表达式对象,例如:{name:{$in:[/^joe/i,/^jack/}}
在使用隐式的$and操作符中,只能使用$regex,例如:{name:{$regex:/^jo/i, $nin:[‘john’]}}
当option选项中包含X或S选项时,只能使用$regex,例如:{name:{$regex:/m.*line/,$options:”si”}}
$regex操作符的使用
$regex操作符中的option选项可以改变正则匹配的默认行为,它包括 i, m, x以及S四个选项,其含义如下
i 忽略大小写,{
m 多行匹配模式,{
x 忽略非转义的空白字符,{
s 单行匹配模式{
使用$regex操作符时,需要注意下面几个问题:
i,m,x,s可以组合使用,例如:{name:{$regex:/j*k/,$options:”si”}}
在设置索弓}的字段上进行正则匹配可以提高查询速度,而且当正则表达式使用的是前缀表达式时,查询速度会进一步提高,例如:{name:{$regex: /^joe/}
%HOMEPATH% 相当于 C:\Documents and Settings\用户目录
%APPDATA% 相当于 C:\Documents and Settings\用户目录\Application Data
常用命令
pipenv install:
若项目目录中虚拟环境未创建且无Pipfile文件,将安装虚拟环境并创建Pipfile文件
若项目目录中虚拟环境未创建且有Pipfile文件,将根据Pipfile文件来安装相应python版本和依赖包
若项目目录中虚拟环境已创建且有Pipfile文件,将根据Pipfile文件来安装依赖包
pipenv install xx::安装python包
pipenv uninstall xx::卸载python包
pipenv shell:进入虚拟环境(项目目录下)
exit:退出虚拟环境
pipenv graph:显示包依赖关系
pipenv –venv:显示虚拟环境安装路径
1. 使用pip
pip install virtualenv
2. 创建运行环境
virtualenv [虚拟环境名称]
virtualenv venv
#如果不想使用系统的包,加上–no-site-packeages参数
virtualenv –no-site-packages 创建路径名
3. 激活环境
linux:
$ cd venv
$ source ./bin/activate
Windows 10:
> cd venv
> .\Scripts\activate.bat
4. 退出环境
linux:
$ deactivate
Windows 10:
> .\Scripts\deactivate.bat
5. 删除环境
没有使用virtualenvwrapper前,可以直接删除venv文件夹来删除环境
6. 使用环境
进入环境后,一切操作和正常使用python一样 安装包使用pip install 包