正则表达式:
match() : 传入要匹配的字符串以及正则表达式(从字符串的开头开始匹配);
search() : 扫描整个字符串,然后返回第一个成功匹配的结果;
findall() : 搜索整个字符串返回所有匹配的结果;
sub() : 去掉匹配的信息;
compile() : 将正则字符串编译成正则表达式对象以便在后面的匹配中复用;
^:字符串的开始
&:字符串结束
|:匹配左右任意一个表达式
\:转义
\d:匹配数字(0-9)
\D:匹配非数字
\s:匹配任何空白字符(\f,\n,\r,\t,\v)
\S:匹配任何非空字符
\w:匹配字母、数字、下划线(A-Z、a-z、0-9、_)
.:匹配任意一个字符(除了\n)
[]:匹配[]中的字符
*:前一个字符出现0次到无数次
+:前一个字符出现一次到无限次
?:前一份字出现0次到1次
{m}:前一个字符出现m次
{m,n}:前一个字符出现m到n次
\d{11}:11位的手机号码
\d{3,4}-?/d{8}:区号+座机号
a*?b:匹配最短的(非贪婪)以a开头以b结尾的字符串
a.*b:贪婪匹配(匹配全部)
re.match():从字符串开始匹配
re.search():不必从字符串匹配,与re.match()对应
re.findall():贪婪匹配(匹配全部)
raise:
当程序出现错误,python会自动引发异常,也可以通过raise显示引发异常,一旦执行raise语句,raise后面的语句将不能执行;
schedule:
schedule.every(10).minutes.do(job) #每十分钟执行一次任务;
schedule.every().hour.do(job) #每小时执行一次任务;
schedule.every().day.at(10:30).do(job) #每天10:30分执行任务;
schedule.every(5).to.days.do(job) #每隔5-10天执行一次任务;
schedule.every().monday.do(job) #每周以的这个时候执行任务;
schedule.every().wednwsday.at("13:15").do(job) #每周三13:15执行这个任务;
run_pending:运行所有可以运行的任务
hashilib:
又称哈希算法,提供常见的摘要算法,如MD5,SHA1等;
time.time():
返回当前时间的时间戳;
random:
random.randint(1,10)
产生1-10的一个整数型随机数;
random.random()
产生0-10时间的随机浮点数;
random.unidom(1.1,5.4)
产生1.1-5.4之间的随机浮点数,区间可以不是整数;
ranfom.choice(' ')
从序列中随机选取一个元素;
random.randrange(1,200,2)
生成1-200的时间为2的随机整数;
json.dumps:
用于将python对象编码成json字符串
json.loads:
将已编码的就送字符串解码为python对象
线程与进程区别:
1:同一个进程中的线程共享一内存空间,但是进程之间独立的;
2:同一个进程中的线程的数据是共享(进程通讯),进程之间的数据是独立的;
3:对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除了删除以外)不会影响其他子进程;
4:线程是一个上下文的执行指令,而进程是与运算相关的一簇资源;
5:同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理来实现;
6:创建新的线程很容易,但创建新的进程需要对父进程做一次复制;
7:一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程;
8:线程启动速度快,进程启动速度慢;
threading.currentThreading():返回当前的线程变量;
threading.enumerate():返回一个包含正在运行的线程的list,正在运行指线程启动后,结束钱不包括启动前和结束后的线程;
threading.activeCount():返回正在运行的线程数量与len(threading.enumerate())有相同的结果;
获取时间
arrow.now():获取当前时间;
arrow.utcnow():获取格林尼治时间;
输出格式为:年-月-日T时-分-秒.微秒+时区 返回的是一个arrow时间对象;
arrow.now().timestamp:当前时间的时间戳;
arrow.now.format(“YY-MM-DD:HH-mm-ss”):使用format进行格式输出;
arrow.Arrow(YYYY,M,D).format("YYYY-MM-D-HH-mm-ss):时间戳转换;
时间推移:arrow.shift(days/weeks/months/years) 括号内值为正向未来移,值为负向过去移;
item():
以列表形式返回可变量的(键,值)元组数组
input():
控制台输入
mongodb
MongoDB条件操作符:
(>)大于 $gt
(<)小于 $lt
(>=)大于等于 $gte
(<=)小于等于 $lte
(!=)不等于 $ne
(=)等于 $eq
模糊查询:
查询title包含“教”字的文档:
db.col.find({title:/教/})
查询title字段以“教”字开头的文档:
db.col.find({title:/^教/})
查询title字段以“教”字结尾的文档
db.col.find({title:/教$/})
enumerate()函数的用法
1、enumerate()是Python的内置函数
2、用于可迭代\可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标
3、一般在for循环中使用
例如:
import enum
for index, i in enumerate(range(10)):
print(index, i)
输出结果:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
threading.enumerate(): 返回一个包含正在运行的线程的list。
正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
返回一个list类型,通过这个list类型我们就可以得知,目前线程数量的多少。
错误
shutting down with code:48
如果您使用的是Mac,则可以简单地27017终止端口上运行的进程,在大多数情况下,该端口为mongodb进程。
只需运行命令。
npx kill-port 27017
之后,您可以像平常一样运行mongod命令
或者,如果您使用的是Windows,请按照以下步骤操作
以管理员身份运行命令行
netstat -ano | findstr :27017
最后,您将获得pid,这是要杀死的进程ID
taskkill /PID <typeyourPIDhere> /F
成功终止过程后,您可以照常运行mongod
shutting down with code:100
进入路径:
cd /usr/local/mongodb/bin
启动:
./mongod --dbpath ../data/
另开终端:
./mongo
忽略警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.
requests.packages.urllib3.disable_warnings()