返回第一个下划线之前的所有字符
在Python中使用re
模块,我想要获取一个字符串中第一个下划线之前的所有字符。此外,我希望返回的字符串全部变成大写,并且不包含任何非字母数字的字符。
举个例子:
AG.av08_binloop_v6 = AGAV08
TL.av1_binloopv2 = TLAV1
我很确定我知道怎么用string.upper()
把字符串变成全大写,但我不太确定怎么有效地去掉.
。任何帮助都将非常感谢。我正在慢慢学习正则表达式,每一个小技巧我都会记下来,以备将来使用。
为了进一步说明,我上面的例子并不是实际的字符串。实际的字符串看起来会像:
AG.av08_binloop_v6
而我想要的输出结果是:
AGAV08
下一个例子也是一样。字符串:
TL.av1_binloopv2
想要的输出:
TLAV1
再次感谢大家的帮助!
6 个回答
3
因为大家都在分享自己喜欢的实现方式,这里我也来分享一个我自己的,不用re
模块的:
>>> for s in ('AG.av08_binloop_v6', 'TL.av1_binloopv2'):
... print ''.join(c for c in s.split('_',1)[0] if c.isalnum()).upper()
...
AGAV08
TLAV1
我把.upper()
放在生成器的外面,这样它只会被调用一次。
24
即使不使用 re
模块:
text.split('_', 1)[0].replace('.', '').upper()
7
试试这个:
re.sub("[^A-Z\d]", "", re.search("^[^_]*", str).group(0).upper())