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

如何实现长文本中每次出现sentence时截取50字符的处理?

需求与解决方案

问题背景

我有一个长文本字段,需要实现:每当文本中出现Sentence一词时,从该词开始截取50个字符。尝试了substring和instring的组合用法,但未能成功实现需求。

原始数据

Column AColumn B
S101Sentence 1: 从前有个穷小子,每天挨家挨户卖报纸赚钱上学。有一天,他在走街串巷时,开始感到浑身无力。这孩子饿得不行,于是决定到下一户人家讨点吃的。 Sentence 2: 穷小子多次讨食都被拒绝,直到来到一个女孩家门前。他讨了一杯水,女孩见他可怜,给他端来了一杯牛奶。男孩问要付多少钱,女孩却拒绝收费。Sentence 3: 多年后,那个女孩长大成人,得了重病。她看了一个又一个医生,都没人能治好她。最后,她去找了镇上最好的医生。Sentence 4: 医生花了几个月时间治疗,终于把她治好。她虽然很高兴,但担心付不起账单。然而,当医院递给她账单时,上面写着:‘已用一杯牛奶全额付清。’
S102Sentence 1: 从前有个国王叫迈达斯,他帮森林之神萨堤罗斯做了件好事。酒神狄俄尼索斯因此答应满足他一个愿望。 Sentence 2: 迈达斯许愿,希望自己触摸到的一切都变成金子。尽管狄俄尼索斯试图劝阻,迈达斯坚持这是个绝妙的愿望,于是愿望被实现了。 Sentence 3: 迈达斯对新获得的能力兴奋不已,开始触摸各种物品,把它们都变成纯金。

期望输出

Column AColumn B
S101Sentence 1: 从前有个穷小子,每天挨家挨户卖报纸赚 Sentence 2: 穷小子多次讨食都被拒绝,直到来到一个女 Sentence 3: 多年后,那个女孩长大成人,得了重病。她 Sentence 4: 医生花了几个月时间治疗,终于把她治好。
S102Sentence 1: 从前有个国王叫迈达斯,他帮森林之神萨 Sentence 2: 迈达斯许愿,希望自己触摸到的一切都变成 Sentence 3: 迈达斯对新获得的能力兴奋不已,开始触摸

解决方案

方案1:Oracle SQL实现

利用正则表达式拆分每个Sentence片段,截取前50字符后拼接:

WITH split_sentences AS (
    SELECT 
        t.Column_A,
        REGEXP_SUBSTR(t.Column_B, 'Sentence[^S]+', 1, LEVEL) AS sentence_part
    FROM your_table t
    CONNECT BY LEVEL <= REGEXP_COUNT(t.Column_B, 'Sentence')
        AND PRIOR t.Column_A = t.Column_A
        AND PRIOR SYS_GUID() IS NOT NULL
)
SELECT 
    Column_A,
    LISTAGG(SUBSTR(sentence_part, 1, 50), ' ') WITHIN GROUP (ORDER BY LEVEL) AS Column_B
FROM split_sentences
GROUP BY Column_A;

代码说明:

  • REGEXP_SUBSTR(...):匹配从Sentence开始到下一个Sentence开头前的所有内容;
  • REGEXP_COUNT(...):统计文本中Sentence的出现次数,控制循环层级;
  • SUBSTR(sentence_part, 1, 50):对每个片段截取前50个字符;
  • LISTAGG(...):将所有处理后的片段用空格拼接成最终文本。

方案2:Python实现

用正则表达式提取所有Sentence片段,处理后拼接:

import re

def process_text(text):
    # 匹配所有以Sentence开头的片段,直到下一个Sentence或文本结束
    pattern = r'Sentence.*?(?=Sentence|$)'
    matches = re.findall(pattern, text, re.DOTALL)
    # 截取每个片段前50字符并拼接
    return ' '.join([part[:50] for part in matches])

# 测试使用
sample_text = "Sentence 1: 从前有个穷小子,每天挨家挨户卖报纸赚钱上学。..."
print(process_text(sample_text))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:12:53