从字符串的开头删除数字的最Pythonic方法是什么?

时间:2014-09-17 10:07:24

标签: python

我有各种各样的字符串

123_dog 2_fish 56_cat 45_cat_fish

总有一个号码。数字后面总是'_'。

我需要删除号码和下划线。我可以使用正则表达式,但我想知道是否有一些使用内置方法的pythonic方式?

(我是一位经验丰富的编码员 - 但对Python来说是新手。)

3 个答案:

答案 0 :(得分:8)

假设数字后面总是有一个下划线,并且总是只有一个数字,你可以这样做:

s = '45_cat_fish'
print s.split('_', 1)[1]
# >>> cat_fish

split的参数指定要执行的最大拆分数。

答案 1 :(得分:4)

使用拆分和加入:

>>> a="45_cat_fish"
>>> '_'.join(a.split('_')[1:])
'cat_fish'

修改:split可以采用maxsplit参数(请参阅YS-L回答),因此'_'.join是不必要的,a.split('_',1)[1] ...


使用find

>>> a[a.find('_')+1:]
'cat_fish'

答案 2 :(得分:1)

另一种方式是:

s = "45_cat_fish"
print ''.join(c for c in s if c.isalpha() or c == '_')[1:]

给出cat_fish