使用多个分隔符分割字符串时,如何使分隔符保持在原位?

时间:2020-04-13 16:30:37

标签: python regex

import re

p = re.compile(r"([?.;])")

ss = re.split(p, 'This is a test? This is a test?good.bad')

for s in ss:
    print(s)

结果是:

This is a test
?
 This is a test
?
good
.
bad

我希望结果是:

This is a test?
This is a test?
good.
bad

为什么将分隔符放在另一行?

编辑: 我想我知道为什么会这么做。问题是如何产生我想要的结果。

2 个答案:

答案 0 :(得分:2)

您可以加入定界符和前面的项目:

RPAD(REPLACE(CAST(CEIL(MOD(columntimesec, 60)) / 100 AS VARCHAR(3)) , '.','0:'),4,'0')

答案 1 :(得分:2)

一条评论说您必须使用模式p。这是拆分后将配对配对的一种方法。 zip_longest通过为第二个元素返回None来确保进行奇数配对,如果存在,则将其转换为空字符串。

import re
from itertools import zip_longest

p = re.compile(r"([?.;])")

ss = re.split(p, 'This is a test? This is a test?good.bad')

for a,b in zip_longest(ss[::2],ss[1::2]):
    print(a+(b if b else ''))

输出:

This is a test?
 This is a test?
good.
bad