Python基础
跳到导航
跳到搜索
Python ABC
INFO
已安装包
- pip3 list
- Pip3 install numpy…whl
指定编码
变量中出现非ASCII字符,则需要指定处理之编码,如:utf-8
#coding=<encoding name> OR #!/usr/bin/python3 #-*- coding: utf-8 -*-
引入路径
同目录或系统
import sys import os import ustr
当前文件下一级目录
import udef.ustr as ustr # or from udef.ustr import to_num ## 当前文件同级目录 sys.path.append("..") import udef.ustr as ustr
reload
import importlib importlib.reload(usql_sys)
建目录(多级,相当于 -p)
if not os.path.exists(path_op): os.makedirs(path_op)
判断文件是否存在
os.path.exists(FN) - OR - os.path.isfile(FN) - OR - os.access(FN, os.F_OK|R_OK|W_OK|X_OK)
当前路径
os.chdir('./ppy') os.getcwd()
动态执行命令
TOPIC=b"l_serv_monitor_io" CMD="mqkc.topics[TOPIC]" mqtp = eval(CMD)
编译
DEBUG
python3 -m pdb mqlog_oc_mc3 n=10000 offset=0 b umq.py:353 设置断点 c 执行到下一个断点 l 列出附近代码
特殊字符
PA='\x04'
list
- 下标从零开始 - print v1_list[0]
- length - print len(v1_list)
三目
max = a if a>b else b
lamda 表达式
uncol = str([x for x in re.split(" *, *", uncol) if x]).strip('[]') cols = re.sub('[\[\]\']', , str([x for x in re.split(" *, *", cols) if x]))
sys
sys.argv 是命令行参数列表,type=列表
ENV
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8' #oracle
string
split
# 将字符串按分隔符切几次,切分的最后部分为剩余全部;如:n=1时,字符串为两部分 v1 = "1010;msinfo;bidb01;10.10.137.10;/;32" key,type,name,ip,v1 = v1.split(';', 4) #也可以把拆分后的结果存到 list v1_list = v1.split(';') ## strip #移除字符串头尾指定的单字符,支持多个单字符。 str.strip([chars]) s=',hello, world.,!,' s.strip(',.!') # 'hello, world' str(e).replace('\r', ' ').replace('\n', ' ') # delete \r\n ## 重复字符 v1 = "%s," * 10 ## 子字符个数 s.count(',')
re
re.split
import re v1="abc aa;bb,cc | dd(xx).xxx 12.12' xxxx" >>> re.split(r' ', v1) ['abc', 'aa;bb,cc', , '|', 'dd(xx).xxx', "12.12'\txxxx"] >>> re.split(r'[\s]', v1) ['abc', 'aa;bb,cc', , '|', 'dd(xx).xxx', "12.12'", 'xxxx'] >>> re.split(r'[\s;,.()]', v1) ['abc', 'aa', 'bb', 'cc', , '|', 'dd', 'xx', , 'xxx', '12', "12'", 'xxxx'] >>> re.split(r'bb,', v1) ['abc aa;', "cc | dd(xx).xxx 12.12'\txxxx"]
与 str.split 比较,相同部分
s1='a,b,c,d, ,,12.3' >>> re.split(',', s1) ['a', 'b', 'c', 'd', ' ', , '12.3'] >>> s1.split(',') ['a', 'b', 'c', 'd', ' ', , '12.3'] >>> s1.split('c,') ['a,b,', 'd, ,,12.3'] # string 可以指定分解的个数 >>> s1.split(',',3) ['a', 'b', 'c', 'd, ,,12.3']
正则
s2='a,{b,c,d}, ,,12.3' >>> re.split('{|}', s2) ['a,', 'b,c,d', ', ,,12.3'] >>> re.split('{|}|,', s2) ['a', , 'b', 'c', 'd', , ' ', , '12.3']
re.sub 替换
. = any char * = more
re.sub(' ', , p_str1) str1 = 'a, b , c ,d e, f1,g' re.sub(' *, *', ',', str1) s="select a,b,c,eee from tab where sfrom = 'abc'" re.sub('select.*?from', , s) # " tab where sfrom = 'abc'" # 惰性匹配 #*,+,?等都是贪婪匹配,后面加?号使其变成惰性匹配 cols = re.sub(':.*?,', ',', s1+',').strip(',') # s1=uuid:1|32|h,etl_id:2|8|r,... # 分组匹配 import re s = '110223199001011123' res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})(?P<bron_month>\d{2}',s) print(res.groupdict()) 此分组取出结果为: {'province': '110', 'city': '223', 'born_year': '1990', 'bron_month': '01'} # 取{}字符 re.search('\{.*\}', S1) # 替换超过五个数字 re.sub('(\d\d\d\d\d*)', '32000', str1) # str1 = 'varchar2(65536)'
Error Info
# except Exception as e: str(e).split('\n')[0] # raise raise ValueError('Error.')