Python——通过正则表达式列表将字符串拆分为列表

Python——通过正则表达式列表将字符串拆分为列表,python,regex,Python,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]

我希望将单个字符串转换为基于相应正则表达式值列表的字符串列表

我的代码当前如下所示:

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|"

返回的列表将是:

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

提前感谢。

对于您试图实现的目标,拆分不是正确的功能。编写一个正则表达式,并为要分析的每个字符串创建一个子表达式。以类似于
([\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)
p=re.compile(“”)
m=p.match('ab')
retTuple=m.组(1,2,3,4,5,6)

您可以像使用列表一样使用结果元组(除了它是不可变的)。

我认为您最好用
替换任何拆分字符,然后在
上拆分,
感觉这更接近您想要做的事情。我正在使用的CSV ish文本文件使使用这种合理的方法变得困难(一些值字段包含
和其他类似的复杂情况…)是的,因此我们只需在所有替换上执行for循环,因此
对于替换中的r:s.replace(r,,)
这将用逗号替换所有除法器,然后我们在逗号上拆分。我认为str.translate和split会简单得多
p = re.compile('<your regex>')
m = p.match('ab')
retTuple = m.group(1,2,3,4,5,6)