【问题标题】:adding numbers to a list from a string using regex [duplicate]使用正则表达式从字符串中将数字添加到列表中[重复]
【发布时间】:2019-04-02 18:18:08
【问题描述】:

简单代码位:

import re

data = "t3st 11.22.3333.44 bl4h"
r=re.compile(r'([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)')
s=r.search(data)
print (s.group())

此时 s.group() = "11.22.3333.44" 这很棒。
我想从小数点内的数字组中列出一个列表:

list = ["11","22","3333","44"]

我怎样才能做到这一点?谢谢。

【问题讨论】:

  • 一开始可能有更好的方法,但x.split('.') 有效,其中x 是您当前的输出。
  • ([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+) 捕获这 4 个数字。

标签: python regex python-3.x


【解决方案1】:

为什么不简单地将您的输出字符串拆分为.

>>> import re

>>> data = "t3st 11.22.3333.44 bl4h"
>>> r=re.compile(r'([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)')
>>> s=r.search(data)
>>> print (s.group().split('.'))
['11', '22', '3333', '44']

【讨论】:

    【解决方案2】:

    将您的模式更改为每个数字一组:

    import re
    
    data = "t3st 11.22.3333.44 bl4h"
    r=re.compile(r'([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)') # individual groups per numbers
    s=r.search(data)
    print ( list( s.groups()) )  
    

    输出:

    ['11', '22', '3333', '44']
    

    Match.groups() 返回一个元组,见Doku

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2012-12-20
      相关资源
      最近更新 更多