【问题标题】:Convert list of one number to int将一个数字的列表转换为 int
【发布时间】:2012-08-03 20:29:14
【问题描述】:

我有一个正则表达式,可以从日志中解析 line# 字符串。然后对该 line# 进行另一个正则表达式以提取 line#。

例如:

这个正则表达式的一部分:

m = re.match(r"^(\d{4}-\d{2}-\d{2}\s*\d{2}:\d{2}:\d{2}),?(\d{3}),?(?:\s+\[(?:[^\]]+)\])+(?<=])(\s+?[A-Z]+\s+?)+(\s?[a-zA-Z0-9\.])+\s?(\((?:\s?\w)+\))\s?(\s?.)+", line)

将匹配这个:

(line 206)

然后这个正则表达式:

re.findall(r'\b\d+\b', linestr)

给我

['206']

为了进一步处理我的信息,我需要将行号设置为整数,并且无法找到如何执行此操作的解决方案。

【问题讨论】:

    标签: regex list python-2.7 int


    【解决方案1】:

    你可以试试:

    line_int = int(re.findall(r'\b\d+\b', linestr)[0])
    

    或者如果列表中有多个元素:

    lines_int = [int(i) for i in re.findall(r'\b\d+\b', linestr)]
    

    甚至

    lines_int = map(int, re.findall(r'(\b\d+\b)+', linestr))
    

    希望对你有帮助-^.^-

    【讨论】:

      【解决方案2】:

      使用 int() 将您的一个“字符串数字”列表转换为 int:

       myl = ['206']
       int(myl[0])
       206
      

      如果您有这些列表,您可以使用list comprehension 将它们全部转换为整数:

      [int(i) for i in myl]
      

      产生一个整数列表。

      你可以把它挂到你的代码中,例如,

      int(re.findall(r'\b\d+\b', linestr)[0])

      【讨论】:

        【解决方案3】:
        int(re.findall(r'\b\d+\b', linestr)[0])
        

        ?

        【讨论】:

          猜你喜欢
          • 2013-08-25
          • 2014-06-05
          • 2017-07-24
          • 1970-01-01
          • 2011-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多