返回第一个下划线之前的所有字符

7 投票
6 回答
17377 浏览
提问于 2025-04-16 04:25

在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())

撰写回答