# 如何拆分含有多种分隔符的字符串 import os # 单一分隔符 x = os.popen('ps aux').read().splitlines() s = x[-1] # s.split() # 如果是空格、制表符等空白分隔,可以不用传参 print(s.split()) s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz' res = s.split(';') print(res) # res = map(lambda x: x.split('|'), res) # print(list(res)) t = [] list(map(lambda x: t.extend(x.split('|')), res)) print(t) res = t t = [] list(map(lambda x: t.extend(x.split(',')), res)) print(t) res = t t = [] list(map(lambda x: t.extend(x.split('\t')), res)) print(t) def mySplit(s, ds): res = [s] for d in ds: t = [] list(map(lambda x: t.extend(x.split(d)), res)) res = t # 过滤空字符串 return [x for x in res if x] s = 'ab;cd|efg|hi,,jkl|mn\topq;rst,uvw\txyz' res = mySplit(s, ';,|\t') print(res) # 第二种方法, 使用正则表达式 import re res = re.split(r'[,;\t|]+', s) print(res) # 单一分隔用s.split()速度更快,但是不能使用多个分隔符分隔