“
心存善意,定能途遇天使。
”问
有这样一字符串,'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz',如何根据分隔符 ; , | \t 进行拆分?
答
解决方案:
方案一:连续使用str.split()方法,每次只能处理一种分隔号
■ map()+str.split()
■ sum()+str.split()
■ reduce()+map()+sum()+str.split()
方案二:使用正则表达式的re.split()方法。(推荐!!!)
PS: 处理一个分隔符的时候使用方法一(一个的时候,方法二会比一慢);多个分隔符的时候使用方法二
连续使用str.split()
我们先来小试牛刀。
In [1]: s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'# 注意: str.split('|,;') 这样写的话 会将 |,; 整体当作成1个分隔符In [2]: s.split('|')Out[2]: ['ab;cd', 'efg', 'hi,jkl', 'mn\topq;rst,uvw\txyz']In [3]: [ss.split(';') for ss in s.split('|')]Out[3]: [['ab', 'cd'], ['efg'], ['hi,jkl'], ['mn\topq', 'rst,uvw\txyz']]
不难看出,当第二次分割的时候,分割结果就变成了二维了。我们需要使用str.split()继续分割,就必须进行降维处理,将二维变成一维。降维处理,可以使用前面学到的 m