一、如何拆分含有多种分隔符的字符串
# 将字符串s分割成列表
s = 'abc,eee,weq,e eiu ew weoi|qwei\qe'
方案一:用string的split()方法
append和extend都仅只可以接收一个参数,append参数为任意类型,甚至是tuple,extend 只能是一个列表;
map()它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
def split_str(split_desc, str):
str_list = [str]
for d in split_desc:
t=[]
map(lambda x: t.extend(x.split(d)), str_list) # 将x.split(d)生成的[]中每个元素添加到t[]中
str_list=t
return [x for x in str_list if x]
print split_str([',', ' ', '|', '\\', '\\t'],s)
方法二 :调用正则表达式的re.split方法
import re
print re.split(r'[, |\\t]+',s)
二、如何判断字符串a是否以字符串b开头或结尾
import os, stat
dir_list = os.listdir('.') # 获取当前目录下的所有文件及文件夹名
print dir_list
print [x for x in dir_list if x.endswith(('py', 'txt'))] # endswith()判断字符串是否以元组内任一一个结尾
print oct(os.stat('django.txt').st_mode) # oct()将数字转化为8进制,stat()为状态查询
os.chmod('django.txt', os.stat('django.txt').st_mode | stat.S_IXUSR)
三、调整字符串的文本格式
import re
# 利用正则表达式的捕获组,捕获每部分的内容,在替换字符串中调整各个捕获组的顺序
str = '2017-10-05 this is test'
# 方法一
print (re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', str))
# 方法二
print (re.sub('(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})', r'\g<month>/\g<day>/\g<year>', str) )
四、将多个小字符串拼接成一个大字符串
pl=['litaifa','ljh','jsy','family']
print ';'.join(pl) # 以;为分隔,将列表pl合并成一个长字符串
print ''.join(pl) # 无分隔,将列表pl合并成一个长字符串
pl=['litaifa','ljh','jsy','family',45] # 列表中有非字符串
print ';'.join([str(x) for x in pl]) # 列表解析,开销比较大
print ';'.join(str(x) for x in pl) # 参数用生成器对象,开销比较小,推荐方法
五、对字符串进行左中右对齐
str = 'abc'
print(str.ljust(20)) # 左对齐
print(str.center(20, '-')) # 居中对齐
print(str.rjust(20)) # 右对齐,不足部分用'-'填充
print(format(str, '<20')) # 左对齐
print(format(str, '>20')) # 右对齐
print(format(str, '^20')) # 居中对齐
# 实例,将冒号对齐
d = {
'litaifa': 45,
'jinshuyan': 40,
'ljh': 10
}
w = max(map(len, d.keys())) # 用map对d.keys()列表中的每个元素求长,将长度作为新列表的值返回,max()求列表的最大值
for k in d:
print(k.ljust(w), ":", d[k])
六、去掉字符串中不需要的字符
- 字符串strip(),lstrip(),rstrip()方法去掉字符串两端字符,
- 删除单个固定位置的字符,可以使用切片+拼接的方式
- 字符串replace()方法或正则表达式re.sub()删除任意位置字符
- 字符串translate()方法,可以同时删除多种不同字符
import re, string
str = '++a,b.c|tddef--'
print (str.strip('+-')) # 参数为所有需要删除的字符组成的字符串
print (str[:3] + str[4:] ) # 删除','
print (str.replace('+', '')) # 一次只能删除一种串
print( re.sub(r'[+\-,.|]|(def)', r'', str) ) # 一次可以删除多种串
print( re.sub(r'[+\-,.|]|def', r'', str) ) # 一次可以删除多种串
m = str.maketrans('def', 'xyz') # 生成一个转换表,将d转换为x,e转换为y,f转换为z
print (str.translate(m)) # 将字符串接照m转换表进行转换