在python中将字符串拆分为段

时间:2016-10-07 21:07:37

标签: python regex split

我试图将一个分子作为一个字符串分成它的各个原子组成部分。每个原子都以大写字母开头,以最后一个数字结束。

例如,'SO4'将成为['S', 'O4']

'C6H12O6'将成为['C6', 'H12', 'O6']

非常确定我需要使用正则表达式模块。这个答案接近我正在寻找的内容:Split a string at uppercase letters

1 个答案:

答案 0 :(得分:4)

使用re.findall()模式:

[A-Z][a-z]?\d*
  • [A-Z]匹配任何大写字母

  • [a-z]?匹配零个或一个小写字符

  • \d*匹配零个或多个数字

根据您的示例,这应该可行,但您应该为此目的查找任何特定的库。

示例:

>>> re.findall(r'[A-Z][a-z]?\d*', 'C6H12O6')
['C6', 'H12', 'O6']

>>> re.findall(r'[A-Z][a-z]?\d*', 'SO4')
['S', 'O4']

>>> re.findall(r'[A-Z][a-z]?\d*', 'HCl')
['H', 'Cl']