Rethon中的Regexpr

时间:2016-04-25 20:32:27

标签: python regex

for printJobString in logfile:
    userRegex = re.search('(\suser:\s)(.+?)(\sprinter:\s)', printJobString)
    if userRegex:
        userString = userRegex.group(2)
        pagesInt = int(re.search('(\spages:\s)(.+?)(\scode:\s)', printJobString).group(2))

上面是我的代码,当我在最终获得的模块中运行该程序时,

Traceback (most recent call last):
  File "C:\Users\brandon\Desktop\project3\project3\pages.py", line 45, in <module>
    log2hist("log")  # version 2.
  File "C:\Users\brandon\Desktop\project3\project3\pages.py", line 29, in log2hist
    pagesInt = int(re.search('(\spages:\s)(.+?)(\scode:\s)', printJobString).group(2))
AttributeError: 'NoneType' object has no attribute 'group'

我知道此错误意味着搜索正在返回None,但我不确定如何处理此案例。任何帮助都会受到赞赏,对python来说还是一个新手,还在学习基础知识。

我正在编写一个应该打印出用户页面数量的程序。 180.186.109.129 code:k n h user:luis printer:core 2 pages:32 是一个目标字符串,我的python文件正在尝试创建一个数据文件,每个用户有一行,并包含打印的总页数

1 个答案:

答案 0 :(得分:2)

它发生的原因是因为你的正则表达式找不到任何东西而且返回None

re.search('(\spages:\s)(.+?)(\scode:\s)') returns None

在尝试分组

之前,使用if语句测试它是否为None
for printJobString in logfile:
    userRegex = re.search('(\suser:\s)(.+?)(\sprinter:\s)', printJobString)
    if userRegex:
        userString = userRegex.group(2)
        pagesInt = re.search('(\spages:\s)(.+?)(\scode:\s)', printJobString)

        if pagesInt:
           pagesInt = int(pageInts.group(2))