我有各种各样的字符串
123_dog
2_fish
56_cat
45_cat_fish
总有一个号码。数字后面总是'_'。
我需要删除号码和下划线。我可以使用正则表达式,但我想知道是否有一些使用内置方法的pythonic方式?
(我是一位经验丰富的编码员 - 但对Python来说是新手。)
答案 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