上下文相关的字符串拆分,保留分隔符

时间:2009-06-25 00:19:27

标签: python string split

我有一个“foo-bar-1.23-4”形式的字符串,我需要在第一次爆炸时分割后跟一个数字,结果是['foo-bar','1.23-4 “]。我尝试了以下内容:

>>> re.split('-\d', 'foo-bar-1.23-4', 1)
['foo-bar', '.23-4']

>>> re.split('-(\d)', 'foo-bar-1.23-4', 1)
['foo-bar', '1', '.23-4']

结果不理想。是否有一个单行程可以得到我想要的东西,而不必使用最后一个元素来划分分隔符?

3 个答案:

答案 0 :(得分:2)

你非常接近,试试这个:

re.split('-(?=\d)', 'foo-bar-1.23-4', 1)

我正在使用positive lookahead来完成此操作 - 基本上我正在匹配一个后跟数字字符的短划线。

答案 1 :(得分:0)

re.split('-(?=\d)', 'foo-bar-1.23-4', 1)

使用lookahead,这正是安德鲁所做的,但一分钟就打败了我......: - )

答案 2 :(得分:0)

前瞻性是否有效?

re.split('-?=\d', 'foo-bar-1.23-4', 1)

不确定是否需要围绕前瞻的(和),但要试一试。