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

字符串分割需求:按指定字段拆分特殊格式的目标字符串

解决方案:拆分特定格式字符串到指定字段

我之前处理过不少类似的复杂字符串拆分需求,这种包含可变内容(带空格、点号的名称、带空格的城市)和特殊分隔符(双空格)的场景,用正则表达式来精准匹配是最省心的方案。

核心思路

根据你给出的格式规则:Name[空格]-[空格]City[空格]Points[双空格]Score[空格]Cards,我们可以用带命名分组的正则来直接捕获每个字段,完美处理名称、城市里的空格/点号,以及数值可能为负数的情况。

正则表达式模式

^(?P<name>.+?) - (?P<city>.+?) (?P<points>-?\d+)  (?P<score>-?\d+) (?P<cards>-?\d+)$

模式拆解:

  • (?P<name>.+?):非贪婪匹配任意字符,直到遇到-(空格-空格),精准捕获包含空格、点号的完整名称
  • -:匹配分隔名称和城市的固定分隔符
  • (?P<city>.+?):非贪婪匹配任意字符,直到遇到后续数值前的空格,捕获带空格的城市名称
  • (?P<points>-?\d+):匹配可正可负的Points数值,-?表示可选负号,\d+匹配1个或多个数字
  • :严格匹配Points和Score之间的双空格分隔符
  • (?P<score>-?\d+):同理匹配可正可负的Score数值
  • (?P<cards>-?\d+):匹配可正可负的Cards数值

代码示例(Python)

下面是可直接运行的代码,会把每个字符串拆分为字典格式,还能把数值字段转为整数类型:

import re

# 定义正则模式
pattern = r'^(?P<name>.+?) - (?P<city>.+?) (?P<points>-?\d+)  (?P<score>-?\d+) (?P<cards>-?\d+)$'

# 测试字符串列表
test_strings = [
    "Paul Grid - Hong Kong 56  663 0",
    "Anna Grid - Tokyo 16  363 0",
    "Greg H.Johs - Hong Kong -6  363 4",
    "Jessy Holm Smith - Jakarta 8  261 0"
]

# 遍历处理每个字符串
for s in test_strings:
    match_result = re.match(pattern, s)
    if match_result:
        # 转为字典格式,方便提取字段
        field_dict = match_result.groupdict()
        # 将数值字段转为整数(按需选择)
        field_dict['points'] = int(field_dict['points'])
        field_dict['score'] = int(field_dict['score'])
        field_dict['cards'] = int(field_dict['cards'])
        print(f"处理结果:{field_dict}")

运行输出

处理结果:{'name': 'Paul Grid', 'city': 'Hong Kong', 'points': 56, 'score': 663, 'cards': 0}
处理结果:{'name': 'Anna Grid', 'city': 'Tokyo', 'points': 16, 'score': 363, 'cards': 0}
处理结果:{'name': 'Greg H.Johs', 'city': 'Hong Kong', 'points': -6, 'score': 363, 'cards': 4}
处理结果:{'name': 'Jessy Holm Smith', 'city': 'Jakarta', 'points': 8, 'score': 261, 'cards': 0}

补充说明

如果Points和Score之间的空格偶尔出现多于2个的情况,可以把正则里的 改成\s{2,}(匹配2个及以上空格),这样兼容性更强,但按照你给出的规则,双空格的写法已经足够精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:25:17