这是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"
。
答案 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
格式显示此列表,则可以将join
与generator-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