You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表截取异常求助:大写字母导致处理结果不符合预期

嗨,我来帮你解决这个用户名提取的问题~

先说说你之前代码的问题:你用re.sub把所有大写字母前加空格的方式,会把像SparkleDuck9这种本身包含大写字母的用户名拆碎,导致只能取到前半部分,这就是为什么部分元素被过度截取了。

看了你的数据结构,每个处理后的元素格式是[标签] 用户名头衔(少数没有标签直接是 用户名头衔),头衔都是Guild Master、Prince、Baron、Noble这类固定词,所以我们可以用正则精准匹配出头衔之前的用户名部分,完全不会破坏用户名里的大写字母。

解决方案代码

import re

memberList = ['uuid_e04a043abc334bd1a2fbd167bdce1673[MVP+] IgrisGuild Master2020/07/21 02:35:052020/08/09 01:52:37', 'uuid_1f12bce8313040a7978d5c51ceb9d82d[VIP] mistercintPrince2020/08/01 00:31:342020/08/08 23:47:53', 'uuid_405e46954f804487ae9c18689f0c351b[MVP+] zoucePrince2020/08/06 20:11:222020/08/08 22:02:04', 'uuid_a2b224ba7c5d42ee8d46b2c08297cef5 viellythedivelonBaron2020/07/25 02:54:022020/08/08 22:53:56', 'uuid_ac8f62b779624750ad287320f2505cea[MVP+] Louis7864Baron2020/07/26 19:04:422020/08/09 02:22:07', 'uuid_8a350042ed6a474ba4b186e6126e0be1[VIP] Broadside1138Baron2020/07/29 04:07:072020/08/09 03:01:48', 'uuid_031c3178bfd04099b34301185d1182f3[VIP] KuttaBaron2020/07/31 02:15:202020/08/09 03:16:53', 'uuid_63f8371a69bc404d855afd61f5775db2[VIP+] BabaloopsBaron2020/08/06 23:34:452020/08/08 22:52:44', 'uuid_559b3816586c4db5909fb0ca4f2b56e8[VIP+] SparkleDuck9Baron2020/08/08 23:17:132020/08/09 02:12:58', 'uuid_c469d1cbc4344a36a110664fdc1ba571[VIP] TooLongOfAUserNaNoble2020/08/01 03:54:592020/08/09 02:57:22']

# 第一步:移除首尾固定冗余内容,和你原来的操作一致
processed_list = [e[37:-38] for e in memberList]

# 第二步:用正则匹配提取用户名
# 正则解释:
# ^(?:\[[^\]]+\] )? 匹配开头可选的[标签]部分(比如[MVP+] ),非捕获组不保留这部分
# (.*?) 非贪婪匹配,精准捕获到头衔词之前的用户名
# (?:Guild|Prince|Baron|Noble) 匹配固定的头衔起始词,非捕获组不保留这部分
username_pattern = re.compile(r'^(?:\[[^\]]+\] )?(.*?)(?:Guild|Prince|Baron|Noble)')
members = [username_pattern.match(item).group(1).strip() for item in processed_list]

print(members)

输出结果

['Igris', 'mistercint', 'zouce', 'viellythedivelon', 'Louis7864', 'Broadside1138', 'Kutta', 'Babaloops', 'SparkleDuck9', 'TooLongOfAUserNa']

(注:你期望输出里的Broadside138应该是笔误,原数据里是Broadside1138,所以代码输出的是正确的原始用户名)

如果之后有新的头衔类型(比如King),只要把它加到正则里的头衔列表里就可以了,比如改成(Guild|Prince|Baron|Noble|King)。

内容的提问来源于stack exchange,提问作者CameronScarpati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 19:42:28