我有两个建议。
partition()
使用方法partition() 获取包含分隔符作为元素之一的元组,并使用+ 运算符获取您想要的字符串:
teste1 = 'aloha_maui_d0_b0'
partitiontest = teste1.partition('_d')
print(partitiontest)
print(partitiontest[1] + partitiontest[2])
输出:
('aloha_maui', '_d', '0_b0')
_d0_b0
partition() 方法返回一个元组,其中第一个元素是分隔符之前的内容,第二个是分隔符本身,第三个是分隔符之后的内容。
该方法对它在字符串上找到的分隔符的第一种情况执行此操作,因此如果没有额外的代码工作,您不能使用它来拆分超过 3 个。为此,我的第二个建议会更好。
替换()
使用方法 replace() 在分隔符 (_d) 之前插入一个额外的字符(或多个字符),并将其用作 split() 方法的分隔符。
teste2 = 'new_york_d9_b10'
replacetest = teste2.replace('_d', '|_d')
print(replacetest)
splitlist = replacetest.split('|')
print(splitlist)
输出:
new_york|_d9_b10
['new_york', '_d9_b10']
由于它替换了 |_d 的字符串上的所有 _d 大小写,因此使用它拆分 2 个以上没有问题。
有问题?
您可能需要小心的情况是出现不必要的拆分,因为 _d 出现在比预期更多的地方。
按照城市名称和数字示例的明显逻辑,您可能会有这样的情况:
teste3 = 'rio_de_janeiro_d3_b32'
replacetest = teste3.replace('_d', '|_d')
print(replacetest)
splitlist = replacetest.split('|')
print(splitlist)
输出:
rio|_de_janeiro|_d3_b32
['rio', '_de_janeiro', '_d3_b32']
假设您总是在字符串的末尾有数字并且_d 不会出现在数字内,rpartition() 可能是一个解决方案:
rpartitiontest = teste3.rpartition('_d')
print(rpartitiontest)
print(rpartitiontest[1] + rpartitiontest[2])
输出:
('rio_de_janeiro', '_d', '3_b32')
_d3_b32
由于rpartition() 在字符串的末尾开始搜索,并且只使用第一个匹配项将术语分成一个元组,因此您不必担心第一个术语(城市名称?)会导致意外拆分。