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

Python逐行可靠拆分字符串中的多词文本与数字序列

固定格式行的文本与数字可靠拆分方案

固定位截取方案失效的核心原因是前置文本段长度不固定,强行按22字符切分会在文本段较短时把后续数字切进文本部分。利用该格式「行首为任意长度的多词文本、从第一个纯数字字段开始到行尾全为数字列」的特征,可以用以下两种无位置依赖的方法实现100%准确拆分:


方法1:正则实现(代码最简洁)

直接通过正则匹配行首的非数字段和后续的数字段,自动兼容任意长度的文本、任意数量的分隔空白(空格、制表符均支持):

import re

def split_content_and_numbers(line):
    # 去除行尾换行后,匹配开头非数字文本+后续数字段
    content_match = re.match(r'^(\D+)\s+(.*)$', line.rstrip('\n'))
    words = content_match.group(1).strip()
    numbers = [int(num) for num in content_match.group(2).split()]
    return words, numbers

方法2:逐字段判断实现(无正则依赖)

先把整行按空白拆成独立字段,找到第一个纯数字字段的位置,前面的拼接为文本,后面的转成数字列表:

def split_content_and_numbers(line):
    tokens = line.strip().split()
    # 定位第一个数字字段的索引
    num_start_idx = 0
    for idx, token in enumerate(tokens):
        if token.isdigit():
            num_start_idx = idx
            break
    words = ' '.join(tokens[:num_start_idx])
    numbers = [int(token) for token in tokens[num_start_idx:]]
    return words, numbers

使用说明

  • 两种方法都完全适配给出的所有样例行,包括最后一行短文本的场景,不会出现数字被误划入文本的问题
  • 直接替换原有循环里的固定截取逻辑即可:
for line in file:
    words, numbers = split_content_and_numbers(line)
    list_of_lists.append([words, numbers])
  • 如果后续文件里的数字出现负数、浮点数格式,只需要调整正则匹配规则或者数字判断逻辑即可,核心的分界定位逻辑不需要改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:36:37