按两个条件拆分字符串 - 通配符
Split string by two conditions - wildcard
我需要用一个字符加一个通配符来分割一个字符串:
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')]
>>> text1 = "CompanyA-XYZ-257999_31.12.2000"
>>> text1[:-18]
'CompanyA-XYZ'
>>> text1[-17:]
'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')
除以 [-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']
使用带有先行断言的正则表达式:
>>> 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']
我需要用一个字符加一个通配符来分割一个字符串:
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')]
>>> text1 = "CompanyA-XYZ-257999_31.12.2000"
>>> text1[:-18]
'CompanyA-XYZ'
>>> text1[-17:]
'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')
除以 [-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']
使用带有先行断言的正则表达式:
>>> 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']