4 python字符串、列表处理函数
1 mycommstr=r""" ping %s -n 3|tail -2|head -1|awk '{print $7}'|awk -F "%%" '{print $1}' """ 2 3 4 """ 5 特别说明: 6 如果字符串中有{}不是占位符,最好是使用 % 来拼接字符串,防止与{}冲突,而%的转义,应该使用%% 而不是\% 7 8 ###################### 字符串 ################################################ 9 10 1,字符串的拼接 11 a="abc" 12 b="eee" 13 print (a+b) --> "abceee" 14 15 a=123 16 b="eee" 17 print (str(a)+b) --> "123eee" ##注意数字必须先转换成str字符串类型,才能拼接 18 19 len() --获取序列表长度 20 21 2,字符串格式化 format函数 22 语法: 23 str.format() 24 25 #通过位置 26 print '{0},{1}'.format('chuhao',20) 27 print '{},{}'.format('chuhao',20) 28 print '{1},{0},{1}'.format('chuhao',20) 29 30 #通过关键字参数 31 print '{name},{age}'.format(age=18,name='chuhao') 32 33 class Person: 34 def __init__(self,name,age): 35 self.name = name 36 self.age = age 37 38 def __str__(self): 39 return 'This guy is {self.name},is {self.age} old'.format(self=self) 40 41 print str(Person('chuhao',18)) 42 43 #通过映射 list 44 a_list = ['chuhao',20,'china'] 45 print 'my name is {0[0]},from {0[2]},age is {0[1]}'.format(a_list) 46 #my name is chuhao,from china,age is 20 47 48 #通过映射 dict 49 b_dict = {'name':'chuhao','age':20,'province':'shanxi'} 50 print 'my name is {name}, age is {age},from {province}'.format(**b_dict) 51 #my name is chuhao, age is 20,from shanxi 52 53 #填充与对齐 54 print '{:>8}'.format('189') 55 # 189 56 print '{:0>8}'.format('189') 57 #00000189 58 print '{:a>8}'.format('189') 59 #aaaaa189 60 61 #精度与类型f 62 #保留两位小数 63 print '{:.2f}'.format(321.33345) 64 #321.33 65 66 #用来做金额的千位分隔符 67 print '{:,}'.format(1234567890) 68 #1,234,567,890 69 70 #其他类型 主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。 71 72 print '{:b}'.format(18) #二进制 10010 73 print '{:d}'.format(18) #十进制 18 74 print '{:o}'.format(18) #八进制 22 75 print '{:x}'.format(18) #十六进制12 76 77 78 -------------zfill()方法 79 描述 80 Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。 81 语法 82 str.zfill(width) 83 参数 84 width -- 指定字符串的长度。原字符串右对齐,前面填充0。 85 返回值 86 返回指定长度的字符串。 87 88 ---举例: 89 #!/usr/bin/python 90 91 str = "this is string example....wow!!!"; 92 93 print str.zfill(40); 94 print str.zfill(50); 95 以上实例输出结果如下: 96 00000000this is string example....wow!!! 97 000000000000000000this is string example....wow!!! 98 99 100 101 ################ 列表 ############################################## 102 1,列表访问(函数不适用于字符串) 103 索引 104 切片 105 增加 106 list.append(元素值) 107 删除 108 list.remove(元素值或元素名) 109 del(元素名) 110 例: 111 list1=["ni","hao","ma"] 112 则 113 list1.remove("hao") 114 list1.remove(list1[1]) --都是可以的 115 116 修改 117 list[0]="xxx" 118 查找 119 var in list 120 --存在,则值为TURE 不存在则值为FALSE 121 list=("1","2","3","4","5") 122 a="22" 123 b=a in list 124 print (b) 125 126 127 2,以下函数通用于字符串和列表 128 max() 129 min() 130 cmp() 131 132 a=["1","2","3"] 133 b=["1","6"] 134 则 cmp(a,b) 为-1 135 cmp(b,a) 为 1 136 相同则为0 137 说明: 138 从前到后依次比较,如果能比较出大小则不向后比较了 139 140 ##举例: 一个列表中的部分内容赋值给新列表 141 >>> a=["sss","aaa","ddd","iiii"] 142 >>> b=[a[1],a[3]] 143 >>> print b 144 ['aaa', 'iiii'] 145 146 ## 拼接两个列表 147 在应用append()时,发现列表是以一个元素的形式追加到列表上的,最后查询后用的是extend()方法,下面是区别 148 149 1.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加 150 2.extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加 151 3.+ 直接用+号看上去与用extend()一样的效果,但是实际上是生成了一个新的列表存这两个列表的和,只能用在两个列表相加上 152 4.+= 效果与extend()一样,向原列表追加一个新元素,在原有列表上增加 153 154 ##替换列表中的空字符 155 for i,value in enumerate(txt_list1): 156 if value=='': 157 txt_list1[i]='null' 158 159 ####### 统计列表中指定元素个数 160 count()方法操作示例 161 162 有列表['a','iplaypython.com','c','b‘,'a'],想统计字符串'a'在列表中出现的次数,可以这样操作 163 >>> ['a','iplaypython.com','c','b','a'].count('a') 164 165 166 ####################### 字典 ###################################################3 167 3,字典 168 字典 169 即相当于perl中的哈希表,(使用键值来索引) 170 使用{} 171 格式如: 172 dic={1:1,2:22,3:33} 173 dic={"x":1,"y":2} 174 175 说明;它是可以进行重新赋值的 dic[1]="noh" 176 ##key的要求: 177 必须是 字符串,数字 不能是变量 178 必须使用冒号 ,没有等号 179 180 当key是变量时, 则可以直接使用变量名 181 如上例,print name 结果则是为"nihao" 182 最好是让key为不可变类型 183 184 访问值: 185 dic[1] 则为1 186 dic[2] 则为22 187 for k in dic : 188 print k --遍历打印字典 189 190 增加元素: 191 dic["a"]="nihaoma" --即相当于增加了key为a 值为"nihaoma"的元素(数组只能使用函数list.appened) 192 193 删除元素: 194 del(dic["1"]) 删除KEY为1的值 195 del (dic ) 删除整个字典(删除后字典不存在了) 196 dic.pop("1") 删除并返回KEY为1的值 197 dic.clear() 删除字典所有元素(即清空) 198 199 使用; 200 copy()函数生成字典 201 get(KEY值) 函数,可以取字典中的值,当没有此KEY值时也不会报错,比使用索引KEY来访问要好 202 例; 203 get(2) --如果有key为2的元素,则取出来,没有则啥也不报 204 get(2,"error") --如果有key为2的元素,则取出来,如果无,则返回error 205 ##3,字典的遍历(遍历KEY的方法) 206 ---字典的遍历。X依次取的是KEY,即相当于索引, 207 d={1:111,2:222,3:333,4:444} 208 for x in d: 209 print (d[x]) 210 211 字典.items() --字典的方法,用于获取对应字典的所有的键值对; 212 --例如: 213 print (d.items()) 214 --结果为: 215 dict_items([(1, 111), (2, 222), (3, 333), (4, 444)]) 216 217 ###4,字典的另一种遍历方法 218 ---因为此时,键值对会变成一个整体 219 for x in d.items(): 220 print (x) 221 222 #################################################################### 223 224 225 4,字符串相关函数 226 cmp() 227 ---比较对象的大小(一般用于比较字符串) 228 ---小 返回-1 大返回1 相等返回0 229 ---参数可是数字,字符中,元组,列表 230 ##以下函数仅限于操作字符串,(其它变量如列表,元组无法操作) 231 str.capitalize() 232 str.replace() 233 str.split() 234 235 str.capitalize() 236 ---字符串首字母变成大写(如果首字符为数字或者本身就大小则看不出变化) 237 str.capitalize("hello") 238 a="hello" 239 a.capitalize() 240 241 str.replace() 242 ---替换字符串的字符 243 str.replace("hello","he","wo") 244 a="hello" 245 a.replace("he","wo") 246 247 a="x1122x22334x3333" 248 a.replace("x","w") 249 a.replace("x","w",2) --只替换前2个 250 251 str.split() 252 --切割字符串成一个列表 253 a="192.168.1.100" 254 a.split(".") 255 ['192', '168', '1', '100'] 256 a.split(".",2) --只切割前面两个匹配的字符 257 ['192', '168', '1.100'] 258 259 说明: 260 如果要使用 261 对象.方法() ---则不需要引入模块 262 模块.函数(对象,XX) ---则必须要引入string模块 import string 263 264 265 5,序列相关函数 266 267 range() 268 ---快速生成一个序列 269 例: 270 range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 271 range(1,8) [1, 2, 3, 4, 5, 6, 7] --指定首尾时,最后一元素则为第二个参数前一个 272 range(1,9,2) [1, 3, 5, 7] --指定步长 273 xrange() 274 ---也是生成一个序列 275 ---但并不马上打印出来,适合于大量数据,因为还度快 276 277 len() 278 max() 279 min() 280 filter() 281 zip() 282 map() 283 reduce() 284 285 filter() ---用来操作一个序列,对序列进行刷选的 286 例如: 287 def func (): 288 if x>5: 289 print ("ture") 290 list=[1,2,3,4,5,6,7,8] 291 filter(func,list) 结果则为[6,7,8] 292 解释: 293 当第一个参数(函数名) 以第二个参数为实参时 (即list为func的实参) 294 func返回为真的保留下来。 295 296 297 298 zip() --仅并行遍历(即可以同时遍历多个,最终生一个列表),可以同时操作多个序列,生成将几个序列生成一个列表 299 例如: 300 name=("ni","hao","ma") 301 age=(12,34,23) 302 tel=("133","135","166","199") 303 304 zip(name,age,tel) 305 则结果是:[('ni', 12, '133'), ('hao', 34, '135'), ('ma', 23, '166')] 306 注意: 307 当并行遍历的几个序列长度不同时,则是取最短的列表进行遍历 308 309 map() ---并行遍历并处理(即同时遍历多个,最终生成一个列表) 310 例如; 311 map(None,name,age,tel) --注意None的写法 312 则结果是[('ni', 12, '133'), ('hao', 34, '135'), ('ma', 23, '166'), (None, None, '199')] 313 314 注意: 315 当并行遍历时,使用MAP则不管几个序列长度如何,都会遍历完,序列短的以None标识 316 这里的None其实是个函数, 317 当然也可以写成其它函数, 318 那么并行遍历的时候每个每个序列都会被此函数处理 319 例如: 320 a=[1,2,3] 321 b=[2,2,2] 322 def func (x,y): 323 return (x*y) 324 map(func,a,b) 325 结果为:[2, 4, 6] 326 327 reduce() 328 ---即从第二个参数即序列中依次取相应的元素,作为第一个参数即函数的实参 329 ---只操作一个列表,有点象递归,第一次调用第一个参数即函数的结果作为第二次调用本函数的实参 330 例如: 331 list=range(1,101) 332 def func (): 333 return x+y 334 reduce(func,list) 335 则结果为5050 336 337