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

Python中如何从指定格式字符串提取单词?解决含空格边缘案例

问题:提取选项文本时避免拆分多词内容

我有如下格式的字符串:

string = "[A] Assam[B] Meghalaya[C] West Bengal[D] Odisha "

期望输出 = ['Assam', 'Meghalaya','West Bengal','Odisha']

尝试了多种方法,但总会把West Bengal拆分成两部分,没法处理这种边缘情况。试过把字符串传入下面的函数后再拆分,但没成功:

def remove_alpha(string):
    option = ['[A]', '[B]', '[C]', '[D]']
    res = ""
    for i in option:
        res = string.replace(i, '')
        string = res
    return res

解决方法

核心问题是不能用空格拆分——因为选项本身可能包含空格。用正则表达式可以精准匹配每个选项的边界,直接提取或分割出完整的选项内容。

方法1:正则匹配提取

直接匹配[X]标记后到下一个标记或字符串结尾的内容,确保完整捕获多词选项:

import re

string = "[A] Assam[B] Meghalaya[C] West Bengal[D] Odisha "
# 正则模式:匹配 [字母] 后,捕获所有内容直到下一个 [字母] 或字符串结束
pattern = r'\[\w\]\s*(.*?)(?=\[\w\]|$)'
result = re.findall(pattern, string)
# 清理每个选项的首尾空格
result = [item.strip() for item in result]
print(result)
# 输出: ['Assam', 'Meghalaya', 'West Bengal', 'Odisha']

方法2:正则分割

以[X]作为分隔符分割字符串,再过滤无效内容并清理空格:

import re

string = "[A] Assam[B] Meghalaya[C] West Bengal[D] Odisha "
# 用 [字母] 作为分隔符拆分字符串
parts = re.split(r'\[\w\]', string)
# 过滤空字符串,同时去除每个部分的首尾空格
result = [part.strip() for part in parts if part.strip()]
print(result)
# 输出: ['Assam', 'Meghalaya', 'West Bengal', 'Odisha']

原方法失败原因

你的remove_alpha函数会把所有[X]标记替换为空,得到的字符串是Assam Meghalaya West Bengal Odisha,如果按空格拆分,自然会把West和Bengal拆成两个元素——这就是为什么处理不了多词选项的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:55:19