1、如何拆分有多种分隔符的字符串。
利用正则表达式
import re
s='ab,cd:egg//aaa/kkk'
re.split(r'[,:/\]+',s) #['ab', 'cd', 'e', 'gg', 'aaa', 'kkk']
2、如何判断字符串a是否已以字符串b为开头或者结尾。
使用str的startswith和endswith方法
s='ab,cd:egg/aa/kkk'
#s.endswith('ab') False
#s.startswith('ab') True
s.endswith(('kk','bb')) #startswith和endswith方法可以接受一个元组tuple,满足元组中的任意一个元素就返回True。
3、利用正则表达式调整字符串中文本的格式。
import re
txt='2017-12-02,hahahah.2017-12-03,hahahha'
re.sub('(d{4})-(d{2})-(d{2})',r'1/2/3',txt) #第一个参数指定要替换的格式,第二个参数指定替换后的格式,第三个对象指定需要进行操作的文本对象
'2017/12/02,hahahah.2017/12/03,hahahha'
4、字符串拼接问题。
方式一: 利用字符串的相加 s1+s2,如果字符串比较多的情况下,效率低,浪费内存,
p=['abc','def','ghj','zzz']
res=''
for x in p:
res+=x #这一步每次都会创建一个临时字符串,浪费内存
print(res)
方式二:利用str的join方法
p=['abc','def','ghj','zzz']
res=''.join(p)
print(res)
包含数字的情况下:
p=['abc','def','ghj','zzz',55,66]
#res=''.join([str(x) for x in p]) #这里会先生成一个转换后的列表,如果列表中包含很多元素,这里也会造成内存浪费,可以用生成器来代替
res=''.join((str(x) for x in p))
print(res)
5、字符串的左、右、居中对齐方法。
方式一:利用str字符串的ljust,rjust,center方法。方法接受两个参数,第一个参数指定方法返回后的字符串的长度,第二个参数字符串补填的内容。
s='daacheng'
s.ljust(20,'*') 'daacheng************'
s.rjust(20,'!') '!!!!!!!!!!!!daacheng'
s.center(20,'@') '@@@@@@daacheng@@@@@@'
----------------------------------------------------------------
举例
d={
'daacheng':900,
'amd':1000,
'asdfg':200,
'aaaa':2
}
m=max(list(map(lambda x:len(x),d.keys())))
for x in d.keys():
print(x.ljust(m),':',d[x])
daacheng : 900
amd : 1000
asdfg : 200
aaaa : 2
方式二:利用format()方法
s='aa'
format(s,'<10') #左对齐
format(s,'>10') #右对齐
format(s,'^10') #居中
6、去掉字符串中不需要的字符。
去掉前后两端不需要的字符串strip。
s='+a +a '
s.strip()#去掉前后两端的空格 lstrip()去掉左边空格,rstrip()去掉右边空格
s.strip('+') #去掉左右两端指定字符串
删除单个固定字符串,可以使用切片加拼接的方式。
s='abc+ddd'
s[:3]+s[4:]
字符串的replace()方法或者正则表达式的re.sub()方法删除任意位置字符。
s='abqc+dQdd'
s.replace('q','')
str的maketrans('a','1')映射,
str.maketrans('ab','12')
s='aaabbb'
s.translate(str.maketrans('ab','12')) '111222'