如何选择某个位置按"_"分割字符串?



我有一个类似于此'00004079_20150427_5_169_192_114.npz'的字符串,我想将其拆分为['00004079_20150427_5', '169_192_114.npz']

我尝试了Python字符串split()方法:

a = '00004079_20150427_5_169_192_114.nii.npz'
a.split("_", 3)

,但它返回了:

['00004079', '20150427', '5', '169_192_114.nii.npz']

如何将其分成2个部分,以第三个"_"外观?

我也尝试过:

reg = ".*_.*_._"
re.split(reg, a)

但它返回:

['', '169_192_114.nii.npz']

您可以根据定界线_最高3次拆分字符串,然后再加入所有内容,除了最后一个值

>>> *start, end = s.split('_', 3)
>>> start = '_'.join(start)
>>> 
>>> start
'00004079_20150427_5'
>>> end
'169_192_114.npz'

对于 python2 ,您可以关注此而是

>>> lst = s.split('_', 3)
>>> end = lst.pop()
>>> start = '_'.join(lst)
>>> 
>>> start
'00004079_20150427_5'
>>> end
'169_192_114.npz'

可能的方法之一(如果与正则持续(:

import re
s = '00004079_20150427_5_169_192_114.nii.npz'
res = re.search(r'^((?:[^_]+_){2}[^_]+)_(.+)', s)
print(res.groups())

输出:

('00004079_20150427_5', '169_192_114.nii.npz')

最新更新