我想分割字符串和数字.因此,如果连接的字符串是:
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 | 去了 到| 房子| 数..
正则表达式非常简单:
>>> 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