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

Python循环中调用re.search().group()报AttributeError的解决咨询

解决re.search调用.group()时的AttributeError问题

问题出在re.search()找不到匹配时会返回None,你直接在它后面调用.group(),自然会触发AttributeError——None根本没有.group()方法。删掉.group()脚本能跑,是因为打印了None或者匹配对象,但这不是你要的结果。

下面给你两种解决办法:

办法1:先确认匹配存在再提取

循环里先把匹配结果存起来,判断不为None再调用.group(),避免报错:

import re

with open(r'C:\Users\testuser\OneDrive - personal\Network\network.log', 'r+') as LOG:
    OUTPUT = LOG.readlines()

    for LINE in OUTPUT:
        match_result = re.search(r'\s+name ".*"', LINE)
        if match_result:
            x = match_result.group()
            print(x)

办法2:直接提取引号内的具体值(更贴合你的需求)

如果你只想拿到"包裹的内容,给正则加个捕获组(用括号把要提取的部分包起来),然后用.group(1)取分组内容:

import re

with open(r'C:\Users\testuser\OneDrive - personal\Network\network.log', 'r+') as LOG:
    OUTPUT = LOG.readlines()

    for LINE in OUTPUT:
        # 括号包裹引号内的内容作为捕获组,用.*?做非贪婪匹配避免多引号冲突
        match_result = re.search(r'\s+name "(.*?)"', LINE)
        if match_result:
            # group(1)对应第一个捕获组,也就是引号里的具体文本
            x = match_result.group(1)
            print(x)

这里用.*?而非.*是为了做非贪婪匹配,防止一行里有多个"时,匹配到超出目标范围的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:15:10