繁体   English   中英

Python,正则表达式搜索matchobj触发错误

[英]Python, regular expression search matchobj triggers error

我以某种方式知道这个问题的答案是显而易见的,但是我花了几天的时间试图找出为什么我似乎找不到reg.exp失败了。 下面脚本中的mach对象。 这是我得到的错误消息:

    subject:     Re: Why DOJ BMFEA Baton Rouge rejected Gonzalaz Pen Code 99999 death case


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Traceback (most recent call last):
  File "C:\Apps\UtilitiesByMarc\test_search4Sender_aaB.py", line 46, in <module>
    print fn_cull_sender_info(date_string_raw)
  File "C:\Apps\UtilitiesByMarc\test_search4Sender_aaB.py", line 35, in fn_cull_sender_info
    print 'Line 35:  matchObj found\n str(match_obj.group(0)) = ' +  str(match_obj.group(0))
NameError: global name 'match_obj' is not defined

以下是代码:

import sys
import re, pdb
#pdb.set_trace()

def fn_get_srctxt_hg_datestring_rawdata_from_clipbd(): 
    this_scriptz_FULLName = sys.argv[0]
    try:
        date_string_raw = sys.argv[1]
        return returnval    
    except:
        date_string_raw = ''

        import win32clipboard

        win32clipboard.OpenClipboard()
        clip_text = win32clipboard.GetClipboardData()
        win32clipboard.CloseClipboard()    

        date_string_raw = clip_text
        returnval = clip_text
        return returnval    




def fn_cull_sender_info(date_string_raw): # 
    # Do re replacements
    import re
    sender_info = 'Line 29 empty'
    print '\n\nLine 30:  date_string_raw = [starts on next line...]\n' + str(date_string_raw) + '\n' + 'x'*80 + '\n'
    srchpatrn = r"(from:\t )(([A-Za-z\. ]+?)(?: ))?([A-Za-z.\-_0-9]+@[A-Za-z.\-_0-9].+?\.(?:com|org|net))"        

    matchObj = re.search(srchpatrn, date_string_raw)
    if matchObj:
        print 'Line 35:  matchObj found\n str(match_obj.group(0)) = ' +  str(match_obj.group(0))
        sender_info = str(match_obj.group(0))
    return sender_info


if __name__ == '__main__': 
    harvey = fn_get_srctxt_hg_datestring_rawdata_from_clipbd()
    print harvey
    date_string_raw = harvey
    print '*****'*50
    print '\n\n'
    print fn_cull_sender_info(date_string_raw)

以下(这是由另一个函数生成的文本[此处未显示])是运行上面的python代码时在Windows剪贴板中显示的文本:

sender_display_name = matchObj.search(date_string_raw).group(2)#.strip() 
sender_eml =      matchObj.search(date_string_raw).group(4)

我花了几天的时间试图找出我做错了什么。 我想将正则表达式组3和4捕获到字符串变量中,例如

但是由于我无法将matchObj返回为True,所以我无法到达那里。

您先前已定义matchObj ,而不是match_obj

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM