我希望根据相应的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"]
提前致谢。
答案 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)
你可以使用生成的元组,就像列表一样(除了它是不可变的)。