1. 程式人生 > >問題14:如何拆分含有多種分隔符的字符串

問題14:如何拆分含有多種分隔符的字符串

port 去除 spl 空格 輸出 默認 而不是 拆分 print

方法一:連續使用str.spilt()方法,每次處理一種分隔符;

str.split()方法的應用:按某一種分隔符分割字符串;

#不能用單詞字符進行分割(字母、數字、下劃線)

A、str.split()的用法

#此處是str.spilt(),而不是re.spilt()

s = ab, cd,; aef;,; gh;aij|kl|amb\t op\tqr
s1 = s.split()
#A、默認狀態按空格進行分割;
print(s1)
#輸出:[‘ab,‘, ‘cd,;‘, ‘aef;,;‘, ‘gh;aij|kl|amb‘, ‘op‘, ‘qr‘]

s2 = s.split(,)
#B、按某一符號進行分割 print(s2) #輸出:[‘ab‘, ‘ cd‘, ‘; aef;‘, ‘; gh;aij|kl|amb\t op\tqr‘]

B、代碼

def mysplit(s, ds):
    res = [s]

    for d in ds:
        t = []
        #t.extend(x.split(d)):此處,extend將x.aplit(d)返回的結果的元素,添加到t中
        [t.extend(x) for x in map(lambda x: x.split(d), res)]
        res = t
    
#去除空列表裏的空字符串 return [x for x in res if x] s = ab,cd,;aef;,;gh;aij|kl|amb\top\tqr print(mysplit(s, ;,|\t))
#

方法二:使用正則表達式的re.split()方法,一次性拆分字符串(更快捷方便)

import re
s = ab,cd,;aef;,;gh;aij|kl|amb\top\tqr
s1 = re.split([,;|\t]*, s)
#去除s1中的空字符串
print([x for x in s1 if x])

問題14:如何拆分含有多種分隔符的字符串