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

Python正则如何排除大写单词?网页抓取内容提取技术问询

问题解答

1. 应对不同地名的通用处理方法

别用硬编码的.replace('PARIS - ', ''),这种写法一旦地名变化就失效。可以基于「开头大写地名 + " - "」的固定格式,用正则匹配并替换掉这部分内容,不管具体地名是什么,通用性更强。

2. 排除开头地名和“-”提取剩余文本

两种实用方法:

  • 字符串切片法:先找到“ - ”的索引位置,直接截取后面的内容:
    content = text[text.find(' - ') + 3:]
    
  • 正则匹配法:直接匹配“ - ”之后的全部内容:
    import re
    content = re.search(r'^.*? - (.*)', text).group(1)
    

3. 是否用正则拆分地名与内容?以及排除大写单词的方法

如果文本格式固定(开头是地名+“ - ”+正文),正则是非常合适的方案,既能同时提取地名和正文,也比单纯的字符串操作更灵活。

  • 你写的re.findall('^\w+', text)只能匹配单个单词的地名(比如PARIS),遇到多单词地名(比如NEW YORK)就会失效,建议调整正则匹配连续的大写单词:
    location = re.findall(r'^[A-Z\s]+(?= - )', text)[0].strip()
    
  • 要排除开头的大写地名部分提取正文,除了上述方法,还可以用正则替换去掉开头的目标内容:
    content = re.sub(r'^[A-Z\s]+ - ', '', text)
    
    如果是要排除文本中所有大写单词(不止开头),可以用:
    filtered_text = re.sub(r'\b[A-Z]+\b', '', text)
    

4. 处理此类文本提取问题的步骤

  • 第一步:梳理文本格式规律,确认开头是否都是「地名 - 正文」结构,地名是单个还是多个大写单词,有没有无“-”的异常情况。
  • 第二步:选择合适工具,格式极简单(比如固定位置的“ - ”)用字符串切片/查找更高效;格式有变化(比如地名长度不定)用正则更灵活。
  • 第三步:测试边缘案例,比如多单词地名、缺失“-”的文本、地名后带多余空格的情况,确保代码兼容。
  • 第四步:优化代码健壮性,添加异常处理(比如找不到“-”时的容错逻辑),避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:10:32