python3实用编程技巧_Python3实用编程技巧进阶二

1,如何拆分含有多种分隔符的字符串

s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'

# print(s.split('|,;'))

# print(s.split(';'))

"""

['ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz']

['ab', 'cd|efg|hi,jkl|mn\topq', 'rst,uvw\txyz']

"""

#第一种分割

l = map(lambda ss:ss.split('|'),s.split(';'))

# print(list(l))

#[['ab'], ['cd', 'efg', 'hi,jkl', 'mn\topq'], ['rst,uvw\txyz']]

#第二种 通过extend 把多个列表合并为一个

t=[]

tt = map(t.extend,[ss.split('|') for ss in s.split(';')])

print(list(tt))

#[None, None, None]

print(t)

#['ab', 'cd', 'efg', 'hi,jkl', 'mn\topq', 'rst,uvw\txyz']

#第二种 通过extend 把多个列表合并为一个

t2=[]

tt2 = map(t.extend,[map(t2.extend,[ss.split('|') for ss in s.split(';')])])

print(list(tt2))

#[None, None, None]

print(t2)

#第三种通过sum函数 合并多个列表

ttt = sum([ss.split('|') for ss in s.split(';')],[])

print(ttt)

#和map一样的效果

#['ab', 'cd', 'efg', 'hi,jkl', 'mn\topq', 'rst,uvw\txyz']

def my_split(s,seps):

res = [s]

for sep in seps:

t = []

list(map(lambda ss:t.extend(ss.split(sep)),res))

res = t

return res

print(my_split(s,',;|\t'))

#['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']

#第四种 通过reduce函数特性

from functools import reduce

ddd= reduce(lambda l,sep :sum(map(lambda ss:ss.split(sep),l),[]),',;|\t',[s])

print(ddd)

#['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']

2,如果调整字符串中文本的格式

import re

str='2019-11-12 09:23:23 ddddd'

r = re.sub(r'(?P\d{4})-(?P\d{2})-(?P\d{2})',r'\g/\g/\g',str)

print(r)

11/2019/12 09:23:23 ddddd

3,如何将多个小字符串拼接成一个大字符串

s1 = 'abcdefg'

s2 = '123456'

print(s1+s2)

#abcdefg123456

print(str.__add__(s1,s2))

#abcdefg123456

print("".join([s1,s2]))

#abcdefg123456

4,如何对字符串进行左中右居中对齐

s = 'abc'

ss = s.ljust(10)

print(ss)

#abc

print(len(ss))

#10

print(s.rjust(10,'*'))

#*******abc

print(s.center(10,'*'))

#***abc****

print(format(s,'*<10')) #abc*******

print(format(s,'*>10')) #*******abc

print(format(s,'*^10')) #***abc****

#+加号标识总输出符号

print(format(123,'+'))#+123 正的

print(format(-123,'+'))#-123 负的

print(format(-123,'>+10'))# -123

print(format(-123,'=+10'))#- 123

print(format(123,'0=+10'))#+000000123

d= {'lodDist':100.0,'SmallCull':0.04,'DistCull':500.0,'trilinear':40,'farclip':477}

print(max(map(len,d.keys())))

w = max(map(len,d.keys()))

for k,v in d.items():

print(k.ljust(w),':',v)

"""

lodDist : 100.0

SmallCull : 0.04

DistCull : 500.0

trilinear : 40

farclip : 477

"""

5,如何去掉字符串中不需要的字符

s= 'sunlong@qq.com'print(s.strip())

print(s.lstrip())

print(s.rstrip())

s= '==++--sunlong@qq.com--++=='print(s.strip('=+-'))

s2='abc:123'print(s2[:3]+s2[4:])#abc123

s3= 'abc xyz'print(s3.strip()) #abc xyz

s3= '\t abc \t xyz \n'print(s3.replace(' ',''))# abc xyz

import re

print(re.sub('[ \t\n]+','',s3))

#abcxyz

print(re.sub('\s+','',s3))

#abcxyz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值