1、python 字符串过滤
crazystring = 'dade142.!0142f[., ]ad'
# 只保留数字
new_crazy = filter(str.isdigit, crazystring)
print(''.join(list(new_crazy)))
# 只保留字母
new_crazy = filter(str.isalpha, crazystring)
print(''.join(list(new_crazy)))
# 只保留字母和数字
new_crazy = filter(str.isalnum, crazystring)
print(''.join(list(new_crazy)))
# 如果想保留数字0-9和小数点’.’ 则需要自定义函数
new_crazy = filter(lambda ch: ch in '0123456789.', crazystring)
print(''.join(list(new_crazy))
字符串.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
字符串.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False。
字符串.isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False。
字符串.islower() 所有字符都是小写,为真返回 Ture,否则返回 False。
字符串.isupper() 所有字符都是大写,为真返回 Ture,否则返回 False。
字符串.istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False。
字符串.isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False。
2、@用法:
@一般用于修饰函数,最近版本好像可以修饰类了。如:
def call_cmd(fn):
def rpc_cmd(*args,**kwargs):
try:
fn(*args,**kwargs)
except ERROR as e:
print e
exit(1)
return rpc_cmd
@call_cmd
def instances(a,b):
print a**2+b**2
instances(1,2)
@相当于实际调用的是该函数,如上述实例,最终调用的结果是call_cmd(instances),等价于rpc_cmd(1,2)
3、*args,**kwargs用于接收可变参数
*arg主要用于接收可变数量的普通变量,而,**kwargs用于接收可变数量的kv变量。
如instance(“test”,3,0.5,k1=33,k2=“val2”)
4、改变进程名,用setproctitle
5、获取系统状态、进程信息等,使用psutil,在不同的系统下都适用。可以获取包括CPU信息、内存信息、磁盘信息、网络信息、进程信息等。
正常是根据进程号实例化一个Process对象,如:
import psutil
psutil.pids()
p = psutil.Process(14191)
但一般情况是我们只知道进程名,这时候就需要遍历所有的进程,找到对应的进程。
for p in psutil.process_iter():
try:
if p.name() == proc_name:
proc_info = p.as_dict(attrs=['status', 'create_time', 'cpu_percent', 'memory_info'])
proc_cpu_rate += proc_info['cpu_percent']
except Exception, e:
pass