Python如何拆分含有多种分隔符的字符串
作者:AllardZhao
这篇文章主要介绍了Python如何拆分含有多种分隔符的字符串问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
如何拆分含有多种分隔符的字符串?
实际案例
我们要把某个字符串依据分隔符号拆分不同的字段
该字符串包含多种不同的分隔符
例如:
s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
其中"<,><;><|><\t>"都是分隔符号,如何处理?
解决方案
- 方法1:连续使用str.split()方法,每次处理一种分隔符号。
- 方法2:使用正则表达式的re.split()方法,一次性拆分字符串。
代码演示
# 单一分隔符 str1 = 'root 12125 0.0 0.0 33679596 904 ?? SNs 五02下午' \ ' 0:00.01 /usr/libexec/per' print(str1.split()) ''' str.spilt用法介绍: split(sep=None, maxsplit=-1) -> list of strings seq为分隔符参数默认为空白字符(whitespace),包含空格、制表符(\t)、换行(\n)、回车(\r) seq不同同时传入多个分隔符,只能每次传入一种 ''' # 多种不同的分隔符 # 方法1:连续多次使用str.split方法,每次处理一种分隔符 def my_split(s, ds): # s1:待分隔字符串,ds:包含所有分隔符的字符串 """ 需要注意有种情形是连续两个分隔符,如'i,,j' 列表中会出现空字符串,此时就需要对结果进行过滤。 """ 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] s1 = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz' print(my_split(s1, ';,|\t')) # 方法2(推荐):使用正则表达式re.split ''' re.split方法介绍: split(pattern, string, maxsplit=0, flags=0) pattern为正则表达式,可以使用正则进行多种分隔符切割 ''' import re s2 = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz' # 中括号中为分隔符,+号表示前面字符1个或多个 str2 = re.split('[,;\t|]+', s2) print(str2) ''' 需要注意的是,对于单一分隔符的情况使用str.split效率会更快一些, 但是不能同时处理多个分隔符,对于多个分隔符情况使用re.split。 '''
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。