代码之家  ›  专栏  ›  技术社区  ›  prosseek

用python删除连接字符串的第一部分

  •  0
  • prosseek  · 技术社区  · 14 年前

    我有一根绳子如下

    CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod
    

    删除第一部分(compilationstatistics)或最后一部分(miniumuperiod)的最简单方法是什么?

    我考虑使用正则表达式,但我希望有更好的方法。

    m = re.search("{.+}_{.+}", string)
    m.group(2)
    
    5 回复  |  直到 14 年前
        1
  •  2
  •   Matthew Flaschen    14 年前

    除了第一:

    s[s.find('_') + 1:]
    

    除了最后一个:

    s[0:s.rfind('_')]
    

    没有任何一个:

    s[s.find('_') + 1:s.rfind('_')]
    

    find 返回字符串的第一个索引,以及 rfind 返回最后一个。然后,我们只使用slice语法。

        2
  •  3
  •   Jesse Dhillon    14 年前

    参见python文档 String methods ,特别是 partition rpartition :

    s = "CompilationStatistics_Compilation_StepList_Map_TimingUsage_ClockList_Clock_MinimumPeriod"
    print s.partition('_')[2].rpartition('_')[0]
    

    结果

    Compilation_StepList_Map_TimingUsage_ClockList_Clock
    
        3
  •  3
  •   Matthew Iselin    14 年前

    '_'.join(s.split("_")[1:-1]) ?

    更改接头编号将更改获得的数量:例如,删除“-1”将只删除第一个项目。

        4
  •  1
  •   ewall    14 年前

    如果知道要剪切的块的大小,可以使用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")]
    
        5
  •  0
  •   Oddthinking    14 年前

    使用split()移除第一个部件非常简单:

    s.split("_", 1)[1] # Take the second part of the string, split into 2 pieces.