我有一个字符串如下
CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod
删除第一部分(CompilationStatistics_)或最后部分(_MiniumuPeriod)的最简单方法是什么?
我考虑使用正则表达式,但我希望应该有更好的方法。
m = re.search("{.+}_{.+}", string)
m.group(2)
答案 0 :(得分:3)
请参阅String methods的Python文档,尤其是partition
和rpartition
:
s = "CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod"
print s.partition('_')[2].rpartition('_')[0]
结果
Compilation_StepList_Map_TimingUsage_ClockList_Clock
答案 1 :(得分:3)
'_'.join(s.split("_")[1:-1])
?
更改拼接数将改变您获得的数量:例如,删除“-1”只会删除第一个项目。
答案 2 :(得分:2)
除了第一个之外的所有人:
s[s.find('_') + 1:]
除了最后一次:
s[0:s.rfind('_')]
没有:
s[s.find('_') + 1:s.rfind('_')]
find
返回字符串的第一个索引,rfind
返回最后一个索引。然后,我们只使用切片语法。
答案 3 :(得分:1)
如果您知道要剪切的块的大小,可以使用Python的string slicing,如下所示:
s="CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod"
print s[22:-14]
当然,您还可以通过其他方式找到所需的号码,例如使用String.rindex()
查找要切断的最终块的位置。例如:
print s[len("CompilationStatistics_"):s.rindex("_MinimumPeriod")]
答案 4 :(得分:0)
使用split():
可以轻松删除第一部分s.split("_", 1)[1] # Take the second part of the string, split into 2 pieces.