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

Python3处理美国专利搜索标题:正则拆分短单词失败求解决方案

解决Python处理专利标题字符串的短单词剔除问题

看起来你在处理专利标题时遇到了正则表达式和字符串拆分的问题,我来帮你梳理一下问题所在,然后给出一个优雅的解决方案。

问题分析

首先你的正则表达式存在语法错误:你写的"\b\w[1:3}\b *"里,量词的写法完全错了——应该用{1,3}而不是[1:3},这直接导致正则无法匹配到短单词。其次,你先拆分标点再逐个处理子串的流程,会破坏原有的短语结构,没必要把问题复杂化。

优雅解决方案

我们可以换个思路:先统一处理整个字符串的标点和大小写,再用正确的正则把短单词(及周围空格)作为分隔符拆分,最后过滤掉空内容即可。这样既能保留长单词组成的短语,又能干净地剔除3字符及以下的单词。

完整代码实现

import re
import pandas as pd

def process_patent_title(title):
    # 1. 统一转为小写
    title = title.lower()
    # 2. 将所有非字母数字的标点符号替换为空格,避免干扰单词匹配
    title = re.sub(r'[^a-zA-Z0-9]', ' ', title)
    # 3. 以「1-3字符的单词 + 前后任意空格」作为分隔符拆分字符串
    # \b 确保匹配完整单词,不会误拆长单词的一部分
    parts = re.split(r'\s*\b\w{1,3}\b\s*', title)
    # 4. 过滤空字符串,同时去除短语前后的多余空格
    processed_phrases = [phrase.strip() for phrase in parts if phrase.strip()]
    return processed_phrases

# 应用到你的pandas Series
df_tpdownloads['ProcessedPublicationTitles'] = df_tpdownloads['PublicationTitleSplit'].apply(process_patent_title)

测试你的示例

我们用你给出的三个测试案例验证一下:

  1. 输入:" and training requirements for selected salt applications"
    输出:['training requirements', 'selected salt applications'] ✅
  2. 输入:"december 31"
    输出:['december'] ✅
  3. 输入:"experimental system for salt in an emergence research and applications in process heat"
    输出:['experimental system', 'salt', 'emergence research', 'applications', 'process heat'] ✅

关键细节解释

  • 正则表达式r'\s*\b\w{1,3}\b\s*':
    • \s*:匹配任意数量的空格(包括0个),确保短单词前后有没有空格都能被当成分隔符。
    • \b:单词边界,避免把长单词的部分字符(比如system里的tem)误判为短单词。
    • \w{1,3}:精准匹配1-3个字母/数字组成的短单词,符合你要剔除的目标。
  • 先替换标点为空格:把所有标点统一换成空格,避免像逗号、括号这类符号打断单词的匹配逻辑,处理起来更统一。
  • 过滤空元素:拆分后可能会出现空字符串(比如标题开头就是短单词的情况),用列表推导式过滤掉这些无效内容。

这个方案不需要嵌套循环,逻辑清晰,完全符合你要的「优雅解决方案」要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:55:54