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

Python列表拆分问题:将对战字符串列表拆分为两个参赛方列表

解决对战字符串拆分问题

你的问题出在对strip()函数的理解上——strip("vs")并不是拆分"vs"这个子串,而是移除字符串两端所有属于{'v','s'}的单个字符。对你的示例字符串来说,两端的'A'、'B'都不在这个字符集里,所以strip后字符串完全没变化。虽然单字符场景下你可能碰巧拿到了结果,但这是错误的逻辑,一旦对战方标识是多字符就会失效。

方法1:固定分隔符拆分(推荐)

因为你的字符串格式是固定的"X vs Y",直接用split(" vs ")拆分每个字符串,这是最直接高效的方式:

matches = ['A vs B','C vs D','E vs F','G vs H']
t1 = []
t2 = []

for match in matches:
    team1, team2 = match.split(" vs ")
    t1.append(team1)
    t2.append(team2)

# 结果:
# t1 = ['A', 'C', 'E', 'G']
# t2 = ['B', 'D', 'F', 'H']

如果想用更简洁的写法,用列表推导式+zip:

matches = ['A vs B','C vs D','E vs F','G vs H']
t1, t2 = zip(*[match.split(" vs ") for match in matches])

# 转成列表(zip默认返回元组)
t1 = list(t1)
t2 = list(t2)

方法2:处理不规范的空格

如果对战字符串里的空格不统一(比如有的是"XvsY"、有的是"X vs Y"),可以用正则表达式匹配任意数量的空白字符:

import re

matches = ['A vs B','C  vs  D','EvsF','G   vs   H']
t1 = []
t2 = []

for match in matches:
    # \s* 匹配任意数量的空格(包括0个)
    team1, team2 = re.split(r'\s*vs\s*', match)
    t1.append(team1)
    t2.append(team2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:15:42