将group()转换为float或int格式

时间:2017-12-15 17:24:08

标签: python python-3.x

这是Python. How to print a certain part of a line after it had been "re.searched" from a file

的后续内容

以下是初始代码,基于对链接问题的接受答案:

QT       += core gui
# add open CV
CONFIG += link_pkgconfig
PKGCONFIG += opencv-3.3.1

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

我能够在文本文件中找到所请求的IP地址。

我的目标是以某种方式将字符串import re VSP = input("Номер ВСП (четыре цифры): ") c = re.compile('(\d+\.226\.\S+)\s+\S+' + VSP) Tunnel0_IP_VSP = re.search(c, open('OUS_IP.txt').read()) print (Tunnel1_IP_VSP.group(1)) Номер ВСП (четыре цифры): 1020 10.226.27.60 转换为允许我在数学公式中使用它的格式。例如,我希望通过从原始地址的最后一个八位字节中减去1来获得另一个地址"10.226.27.60"

3 个答案:

答案 0 :(得分:4)

您可以使用{3}的ipaddress模块:

>>> import ipaddress
>>> ip = ipaddress.IPv4Address('10.226.27.60')
>>> ip - 1
IPv4Address('10.226.27.59')

IPv4Address类允许算术运算符

文档:https://docs.python.org/3/library/ipaddress.html#operators

答案 1 :(得分:2)

您可以选择string(最终结果):

s = "10.226.27.60"

然后在split'.'并使用list-comprehension将部分转换为integers

p = [int(i) for i in s.split('.')]

然后最后从最后一个元素中减去1

p[-1] -= 1

获取p

[10, 226, 27, 59]

请注意,如果您希望以原始string格式显示此列表,则可以将joingenerator-expression一起使用:

".".join(str(i) for i in p)
#"10.226.27.60"

答案 2 :(得分:1)

你可以这样做:

string = "10.226.27.60".split(".")
number_list = [int(number) for number in string]
print(number_list)

[10,226,27,60]你可以计算每个元素

转换回来:

string_again = ".".join(str(number) for number in number_list)
print(string_again)

10.226.27.60