无法从dict访问值到变量并打印它

时间:2015-04-16 16:53:09

标签: python scripting

我无法弄清楚为什么这段简单的代码没有运行。

我得到SyntaxError: invalid syntax

没有print语句,代码运行正常并且打印正确,但是当我使用print语句时:print ( linebits['core_time'] )会抛出错误。

这是代码。

#!/usr/bin/python

import string
import sys
import re

log = open("/tmp/log1", "r")

reg_time = re.compile('(time=)(?P<core_time>[1-9]+.\d..)')

def parse_line(arg):
    regMatch = reg_time.search(arg)
    if regMatch:
        linebits = regMatch.groupdict()
        pp = float( linebits['core_time'] )
        print pp

for line in log:
    parse_line(line)

1 个答案:

答案 0 :(得分:0)

确保您没有在编辑器中混合空格和制表符 - 您在parse_line中的缩进看起来很可疑。

如果您的编辑器支持它,请在按Tab键时将其设置为使用4个空格。如果它没有,则完全避免使用制表符进行缩进。

您的代码运行正常。不过,我建议进行以下改进:

  1. 通过在字符串前面添加r来标记正则表达式作为原始字符串 - 这将保留正则表达式字符串中常见的任何转义字符
  2. 在变量名中使用下划线而非驼峰式
  3. 避免括号内的空格 - 即在(和)
  4. 之前和之后
  5. 在每个函数声明之前使用两个空行
  6. 以下是您的代码符合PEP-8的版本:

    #!/usr/bin/python
    
    import re
    
    log = open("/tmp/log1", "r")
    
    
    reg_time = re.compile(r'(time=)(?P<core_time>[1-9]+.\d..)')
    
    
    def parse_line(arg):
        reg_match = reg_time.search(arg)
        if reg_match:
            linebits = reg_match.groupdict()
            pp = float(linebits['core_time'])
            print pp
    
    for line in log:
        parse_line(line)