【问题标题】:re.split() gives empty elements in listre.split() 给出列表中的空元素
【发布时间】:2013-08-08 10:56:30
【问题描述】:

请帮忙解决这个问题:

m = re.split('([A-Z][a-z]+)', 'PeopleRobots')
print (m)

结果:

['', 'People', '', 'Robots', '']

为什么列表有空元素?

【问题讨论】:

    标签: python regex


    【解决方案1】:

    根据re.split documentation

    如果分隔符中有捕获组并且它匹配在 字符串的开头,结果将以空字符串开头。这 字符串的结尾也是如此:

    如果要获取PeopleRobots,请使用re.findall

    >>> re.findall('([A-Z][a-z]+)', 'PeopleRobots')
    ['People', 'Robots']
    

    您可以省略分组:

    >>> re.findall('[A-Z][a-z]+', 'PeopleRobots')
    ['People', 'Robots']
    

    【讨论】:

    • 如果不需要捕获,你甚至不需要括号。
    • @mavili,我提到过。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    相关资源
    最近更新 更多