Python - 通过正则表达式列表

时间:2015-11-22 19:36:14

标签: python regex

我希望根据相应的RegEx值列表将单个字符串转换为字符串列表。

我的代码目前看起来像这样:

def regexSplit(s, regexList):
    retList = [""]*len(regexList)

    i = 0
    for e in enumerate(regexList):
        retList[i] = regex.search(regexList[i], s)
        s = s.split(retList[i], 1)[1]

        i += 1

    return retList

但是,在尝试运行代码时,我收到错误:

in regexSplit
    s = s.split(retList[i], 1)[1]
TypeError: expected a character buffer object

目标示例:

我正试图让它传递值,如果

s = "|Y4000|,03/02/2015,2000,||,|REDLANDS|,|CA|,|92375|"

regexList = ['[\w\d]{5}', '[0,1][1-9][/][0-3][0-9][/][\d]{4}', '[-]?[\d]*', '[^|]{0,40}', '[\w\s]{0,30}', '[\w]{2}', '[\d]{0,5}']

返回的列表将是:

["Y4000", "03/02/2015", "2000", "", "REDLANDS", "CA", "92375"]

提前致谢。

1 个答案:

答案 0 :(得分:2)

对于您要实现的目标,拆分不是正确的功能。编写一个正则表达式并为要解析的每个字符串创建一个子表达式。从([\w\d]{5}).*?([,][0,1][1-9][/][0-3][0-9][/][\d]{4}).*?等开始......等等。

然后你可以使用

p = re.compile('<your regex>')
m = p.match('ab')
retTuple = m.group(1,2,3,4,5,6)

你可以使用生成的元组,就像列表一样(除了它是不可变的)。