从 Python 中的字符串拆分数字

Pro*_*obs 2 python regex

如果我想从句子的编号中拆分字符串: "It was amazing in 2016"

我用:

re.split('\s*((?=\d+))
out: 'It was amazing in', '2016'
Run Code Online (Sandbox Code Playgroud)

现在我想做相反的事情,所以如果一个句子以一个数字开头,然后跟着一个字符串,比如: '2016 was amazing'

我希望结果是: '2016', 'was amazing'

anu*_*ava 5

使用环视,您可以在两种情况下使用单个正则表达式:

\s+(?=\d)|(?<=\d)\s+
Run Code Online (Sandbox Code Playgroud)

代码:

>>> str = "It was amazing in 2016"
>>> re.split(r'\s+(?=\d)|(?<=\d)\s+', str)
['It was amazing in', '2016']

>>> str = "2016 was amazing"
>>> re.split(r'\s+(?=\d)|(?<=\d)\s+', str)
['2016', 'was amazing']
Run Code Online (Sandbox Code Playgroud)

正则表达式分解:

  • \s+ - 匹配 1 个或多个空格
  • (?=\d) - 断言下一个字符是数字的后视
  • | - 或者
  • (?<=\d) - 断言前一个字符是数字的后视
  • \s+ - 匹配 1 个或多个空格