我正在使用路由器配置,需要编写Python脚本来循环遍历配置文件,在特定字符串中搜索特定项目(在这种情况下为IP地址),将其存储为变量,然后使用该变量在另一个字符串中。例如:
interface Vlan88
ip address 12.37.221.1 255.255.255.0
!
!
standby 1 ip (insert ONLY 12.37.221.1 here)
并对所有其他接口执行相同的操作
说实话。...目前尝试== 0,因为这超出了我的知识水平。但是,我正在使用正则表达式替换一些帮助程序地址以及编写HSRP配置部分。但是,我还远远不知道如何搜索特定的东西并将其变成变量。
答案 0 :(得分:0)
您应该首先检查配置文件中是否存在该字符串,如果存在,请连接到另一个字符串:
if <STRING> in open(<CONFIG FILE>).read():
ip = <STRING>
some_other_string += ip
答案 1 :(得分:0)
欢迎堆栈溢出!
对于这个问题,您可以...
<input id="myInput" list="orderTypes" placeholder="Book">
<datalist id="orderTypes">
<option value="Book">
<option value="Copy">
<option value="Page">
</datalist>
<input id="submitButton" type="submit">
contents
字符串方法搜索特定的关键字,例如.find()
ip address
返回目标单词的索引,因此您可以继续获取下一个单词,直到遇到行尾字符为止,至少可能.find()
Here is a somewhat related problem that my help if you like This may help as well
答案 2 :(得分:0)
通常,当与re匹配时(例如使用.cpp:24:9: note: 'event' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>'
cout<<i<<" ";
^
),您将提供一个模式和一个目标字符串。在模式中,指定要查找的字符串的结构,在模式中使用re.search(...)
时,这会创建捕获组,以后可以将其检索。例如:
(...)
s = "ip address 12.37.221.1 255.255.255.0"
mtch = re.search("ip address (\d+.\d+.\d+.\d+) .*")
print(mtch.group(0))
-> ip address 12.37.221.1 255.255.255.0
print(mtch.group(1))
-> 12.37.221.1
始终是完全匹配项,然后出现在您的所有捕获组中。
有关更多详细信息和示例,请阅读食谱的this section
答案 3 :(得分:0)
如果我正确理解问题,则要在"standby 1 ip"
之后插入第一个IP地址。您可以使用正则表达式捕获组来实现此目的:
data = '''
interface Vlan88
ip address 12.37.221.1 255.255.255.0
!
!
standby 1 ip'''
import re
new_data = re.sub(r'(?<=ip address )([\d.]+)(.*)(standby 1 ip)', r'\1\2\3 \1', data, flags=re.DOTALL)
print(new_data)
打印:
interface Vlan88
ip address 12.37.221.1 255.255.255.0
!
!
standby 1 ip 12.37.221.1
您可以在Regex101 (link).上看到此正则表达式的内部工作原理