我要拆分'10.1这是一个句子。又一句话。'
为 ['10.1 这是一个句子', '另一个句子']
并拆分 '10.1。这是一句话。另一句话。'
为 ['10.1.这是一句话','另一句话']
我已经尝试过
s.split(r'\D.\D')
不行,怎么解决?
最佳答案
如果您计划在 .
字符上拆分字符串,该字符前面或后面没有数字,并且不在字符串末尾,则拆分方法可能适合您:
re.split(r'(?<!\d)\.(?!\d|$)', text)
请参阅regex demo .
如果您的字符串可以包含更多特殊情况,您可以使用更可定制的提取方法:
re.findall(r'(?:\d+(?:\.\d+)*\.?|[^.])+', text)
参见this regex demo 。 详细信息:
(?:\d+(?:\.\d+)*\.?|[^.])+
- 匹配一次或多次出现的非捕获组\d+(?:\.\d+)*\.?
- 一位或多位数字 (\d+
),然后是零个或多个序列.
和一位或多位数字 ((?:\.\d+)*
),然后是可选的.
字符 (\.?
)|
- 或[^.]
-.
字符以外的任何字符。
关于python - 如果前面没有数字,则按 '.' 分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70849651/