【问题标题】:Formatting regex output in python3 [duplicate]在python3中格式化正则表达式输出[重复]
【发布时间】:2020-11-14 06:59:52
【问题描述】:

如何格式化正则表达式的输出或以特定格式返回正则表达式输出。

例如: 我有一个程序 test_program:5.4.3.2.11111

我只想获得这个值:5.4.3.2.11111

如果我使用这个功能:

import re

get_number = "test_program:5.4.3.2.11111"
number = re.findall('\d+', get_number)

输出是:

['5', '4', '3', '2', '11111']

但由于格式不正确,我无法将其传递给另一个变量。

我用过这样的东西:

import re

get_number = re.compile(r'\d.\d.\d.d.\d\d\d\d\d')
number = get_number.search('test_program:5.4.3.2.11111')
print(number.group())

并且输出格式正确,但是如果任何数字发生变化,例如 5 将更改为 1011111 将更改为 1111112,这将无法正常工作。

有没有更好的解决方案来以正确的格式从字符串中获取数字,并且不会改变?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

试试这个正则表达式以获得想要的结果

import re

get_number = "test_program:5.4.3.2.11111"
number = re.findall('[\d.]+', get_number)

【讨论】:

  • 非常感谢您的帮助!
【解决方案2】:

您可以对 \d 值使用重复器,以便它们匹配 1 次或多次(而不是恰好匹配一次):

import re


get_number = re.compile(r'\d+.\d+.\d+.\d+.\d+')
number = get_number.search('test_program:15.4.3.2.111112')
print(number.group())

>>> 15.4.3.2.111112

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 2019-02-26
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2019-07-28
    • 2015-06-05
    相关资源
    最近更新 更多