按两个条件拆分字符串 - 通配符

时间:2015-04-09 11:01:27

标签: python string split

我需要通过字符和通配符分割字符串:

text1 = "CompanyA-XYZ-257999_31.12.2000"
text2 = "CompanyB-XYZ-057999_31.12.2000"

我想在位置[-2]或[-0]分割该字符串,因此在XYZ之后。由于我有两个" - ",我不能简单地用那个角色分开。实际上我希望以[-AnyNumber]的形式进行拆分,其中AnyNumber应该是整数的通配符。

5 个答案:

答案 0 :(得分:3)

您是否使用re

尝试此操作
import re
>>>re.findall("(.+XYZ)-(.+)",text1)
[('CompanyA-XYZ', '257999_31.12.2000')]

>>>re.findall("(.+)-(.+)",text1)
[('CompanyA-XYZ', '257999_31.12.2000')]

答案 1 :(得分:1)

您不需要正则表达式,您可以使用str.rsplit设置maxsplit从右侧拆分为1:

text1 = "CompanyA-XYZ-257999_31.12.2000"

print(text1.rsplit("-",1))
['CompanyA-XYZ', '257999_31.12.2000']

text2 = "CompanyB-XYZ-057999_31.12.2000"
print(text2.rsplit("-",1))
['CompanyB-XYZ', '057999_31.12.2000']

如果您希望将它们存储在变量中,只需解压缩:

comp, dte = text2.rsplit("-",1)
print(comp,dte)
('CompanyB-XYZ', '057999_31.12.2000')

答案 2 :(得分:0)

>>> text1 = "CompanyA-XYZ-257999_31.12.2000"

>>> text1[:-18]
'CompanyA-XYZ'

>>> text1[-17:]
'257999_31.12.2000'

答案 3 :(得分:0)

[-AnyNumber]

拆分
In [5]: import re

In [6]: re.split('-(?:[0-9])', text1)
Out[6]: ['CompanyA-XYZ', '57999_31.12.2000']

In [7]: re.split('-(?:[0-9])', text2)
Out[7]: ['CompanyB-XYZ', '57999_31.12.2000']

答案 4 :(得分:0)

使用前瞻断言的正则表达式:

>>> import re
>>> text1 = "CompanyA-XYZ-257999_31.12.2000"
>>> text2 = "CompanyB-XYZ-057999_31.12.2000"
>>> re.split('-(?=\d)', text1)
['CompanyA-XYZ', '257999_31.12.2000']
>>> re.split('-(?=\d)', text2)
['CompanyB-XYZ', '057999_31.12.2000']