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

Python用正则提取双引号之间的文本出现空结果如何解决

问题原因

你遇到的部分行匹配为空的问题,大概率是以下两种情况之一:

  1. 匹配失败的行里的双引号是全角双引号(“ ”),不是你正则里写的半角双引号("),肉眼看起来接近但实际字符编码不同,导致匹配失效。
  2. 匹配失败的行里存在不可见控制字符(比如零宽空格、换行转义符),惰性匹配(.+?)遇到特殊字符时会出现匹配中断的情况。

解决方案

优先用排除字符组替换惰性匹配写法,匹配效率和稳定性都更高,示例代码如下:

import re

# 方案1:仅匹配半角双引号包裹的内容,适配整文件读取场景
with open("目标文件路径", "r", encoding="utf-8") as f:
    file_content = f.read()
titles = re.findall(r'"([^"]+)"', file_content)
print(titles)
# 无异常时输出:['abc', 'ABC. XYZ', '1 - 2 - 3']

# 方案2:同时兼容全角/半角双引号,适配逐行读取、存在首尾空白的场景
titles = []
with open("目标文件路径", "r", encoding="utf-8") as f:
    for line in f:
        # 先去掉行首尾的空白、换行符
        clean_line = line.strip()
        match_res = re.findall(r'["“]([^"”]+)["”]', clean_line)
        if match_res:
            titles.extend(match_res)
print(titles)

如果按上面的写法还是有匹配失败的情况,你可以打印对应行的字符编码确认是否存在其他特殊符号:

# 打印第二行每个字符的编码
print([ord(c) for c in 第二行字符串])
# 半角双引号的ASCII码是34,如果对应位置的编码不是34,替换正则里的匹配规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:57:01