我需要按照字符加通配符的形式来拆分一个字符串:
text1 = "CompanyA-XYZ-257999_31.12.2000"
text2 = "CompanyB-XYZ-057999_31.12.2000"
我希望在位置[-2]或[-0](就在XYZ后面)拆分该字符串。由于有两个“ - ”,我无法简单地按该字符拆分。实际上,我想以[-AnyNumber]的形式进行拆分,其中AnyNumber应该是一个整数通配符。
re
吗?import re
>>>re.findall("(.+XYZ)-(.+)",text1)
[('CompanyA-XYZ', '257999_31.12.2000')]
或者
>>>re.findall("(.+)-(.+)",text1)
[('CompanyA-XYZ', '257999_31.12.2000')]
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')
>>> text1 = "CompanyA-XYZ-257999_31.12.2000"
>>> text1[:-18]
'CompanyA-XYZ'
>>> text1[-17:]
'257999_31.12.2000'
按 [-任意数字]
进行分割
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']
使用正则表达式和前瞻断言:
>>> 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']
re.findall("(.+)-(.+)",text3)
。 - itzMEonTV