我打印了一个输出,例如:
enable
configure terminal
interface fa(fanumber)/(fanumber)
ip adress (ip) (subnet mask)
no shutdown
我想在所有括号中输入新数据:
在我的例子中,这些将是:
(fanumber)/(fanumber)
(ip) (subnet mask)
我是否需要在当前函数中编写更多代码或编写新函数?
我该怎么做?
我目前的职能是:
def readciscodevice(function, device):
conn = sqlite3.connect('server.db')
cur = conn.cursor()
if device == "switch":
cur.execute(
"SELECT DISTINCT command FROM switch WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(function,))
read = cur.fetchall()
return read
elif device == "router":
cur.execute(
"SELECT DISTINCT command FROM router WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(function,))
read = cur.fetchall()
return read;
elif device == "showcommand":
cur.execute(
"SELECT DISTINCT command FROM showcommand WHERE function =? or function='enable' ORDER BY key ASC",
(function,))
read = cur.fetchall()
return read;
a = input("function:")
b = input("device:")
for result in readciscodevice(a,b):
print(result[0])
我不是要求你重写我的功能。我只是寻求帮助来修复括号()问题。
谢谢
更新: 我需要使用replace()来完成我的功能吗?
更新更新: 也许我没有清楚地解释我的问题。我想将我的数据重新输入到我的输出中,以便从以下地址输入:
interface fa(fanumber)/(fanumber)
ip adress (ip) (subnet mask)
到
interface fa0/1
ip adress 192.168.1.1 255.255.255.0
答案 0 :(得分:0)
不确定我是否完全理解您的问题,但要在括号之间的文本中找到任何内容,您可以尝试以下操作:
import re
p = re.compile('\(.*?\)')
iterator = p.finditer('I (want) to (capture) some (words) in (parenthesis)')
for match in iterator:
print(match.group())
输出:
(want)
(capture)
(words)
(parenthesis)
但请注意,一旦您的括号内的单词可以嵌套(例如某些(括号中的单词)'),这将无法正常工作。此外,它不会捕获示例中的除法字符。猜猜你必须编写一些异常/更复杂的正则表达式来捕获一些数学运算符。
更新
iterator = p.finditer(s)
for match in iterator:
s = s[:match.start()] + [match.start():match.end()].replace(match.group(), dict[match.group()]) + s[match.end()]