Skip to main content
 首页 » 编程设计

python之在python中提取部分字符串

2025年05月04日20虾米哥

我必须在 python 中解析输入字符串并从中提取某些部分。

字符串的格式是

(xx,yyy,(aa,bb,...)) // Inner parenthesis can hold one or more characters in it 

我想要一个函数返回 xx、yyyy 和一个包含 aa、bb ... 等的列表

我当然可以通过尝试拆分括号和东西来做到这一点,但我想知道是否有适当的 pythonic 方法从字符串中提取此类信息

我有这段代码可以工作,但是有没有更好的方法(没有正则表达式)

def processInput(inputStr): 
    value = inputStr.strip()[1:-1] 
    parts = value.split(',', 2) 
    return parts[0], parts[1], (parts[2].strip()[1:-1]).split(',') 

请您参考如下方法:

如果您对 RE 过敏,可以使用 pyparsing :

>>> import pyparsing as p 
>>> ope, clo, com = map(p.Suppress, '(),') 
>>> w = p.Word(p.alphas) 
>>> s = ope + w + com + w + com + ope + p.delimitedList(w) + clo + clo 
>>> x = '(xx,yyy,(aa,bb,cc))' 
>>> list(s.parseString(x)) 
['xx', 'yyy', 'aa', 'bb', 'cc'] 
如果需要,

pyparsing 还可以轻松控制结果的确切形式(例如,将最后 3 项分组到它们自己的子列表中)。但我认为最好的方面是如何自然(取决于你想投入多少空间)你可以让“语法规范”阅读:一个开放的paren,一个词,一个逗号,一个词,一个逗号,一个开放的paren,一个分隔的单词列表,两个右括号(如果你发现上面对 s 的分配不太容易阅读,我想是我没有选择更长的标识符的错;-)。