在Python中分隔字符串和整数

Pro*_*obs 2 python

我想分割字符串和数字.因此,如果连接的字符串是:

Hans went to house number 10 92384 29349
Run Code Online (Sandbox Code Playgroud)

它应该将文本分成:

Hans went to house number | 10 | 92384 | 29349
Run Code Online (Sandbox Code Playgroud)

我很困惑如何解决这个问题,因为拆分不会起作用,因为它也会分裂Hans | 去了 到| 房子| 数..

now*_*wox 6

正则表达式非常简单:

>>> import re
>>> s = "Hans went to house number 10 92384 29349"
>>> re.split(r'\s+(?=\d+\b)', s)
['Hans went to house number', '10', '92384', '29349']
Run Code Online (Sandbox Code Playgroud)

那说你的问题很混乱,如果你想将|char 添加到输出中,只需再次加入输出:

>>> ' | '.join(_)
'Hans went to house number | 10 | 92384 | 29349'
Run Code Online (Sandbox Code Playgroud)

如果你的目标是实现一个可以解决问题的函数,你可以这样写:

def split_numbers(string, join=None):
   from re import split
   split = re.split(r'\s+(?=\d+\b)', string)
   return join.join(split) if join else split
Run Code Online (Sandbox Code Playgroud)

请注意,我\b在正则表达式中添加了单词boundary 以避免匹配2cups以句子中的数字开头的单词Hans went to house number 10 92384 29349 and drank 2cups of coffee