擅长:python、mysql、java
<p>使用正则表达式非常简单:</p>
<pre><code>>>> 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']
</code></pre>
<p>也就是说,您的问题令人困惑,如果要将<code>|</code>字符添加到输出,只需再次连接输出:</p>
^{pr2}$
<p>如果您的目标是实现一个能做到这一点的函数,您可以编写以下内容:</p>
<pre><code>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
</code></pre>
<p>请注意,我在正则表达式中添加了单词边界<code>\b</code>,以避免匹配句子<code>Hans went to house number 10 92384 29349 and drank 2cups of coffee</code>中以<code>2cups</code>开头的单词</p>