一、如何拆分含有多種分隔符的字符串
# 將字符串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) # 一次可以刪除多種串
m = string.maketrans('def', 'xyz') # 生成一個轉換表,將d轉換爲x,e轉換爲y,f轉換爲z
print str.translate(m) # 將字符串接照m轉換表進行轉換
print str.translate(None, '+-,.|') # 不進行轉換,而是按照第二個參數,將字符串中包含的每一個字符刪除