因为我没有清楚地解释我的问题。我会尝试解释我想在程序中做些什么。
2.要从我的程序中选择一系列命令,我需要编写一个函数readciscodevice(没有正则表达式)。
enable conf t interface fa(1)/(2) ip address (1) (2)
或 输出B:
enable
conf t
router ospf (1)
network (1) (2)
如您所知,括号(1),(2)内部应该有一些字符串,因此在将ip地址和子网掩码放入第一个输出(A)后,该命令将起作用。
interface fa0/1 ip adress 192.168.1.1 255.255.255.0
我应该为(1)和(2)编写一些raw_input,但是我应该如何修复正则表达式。我在finditer中写错了方法还是使用其他方法。由于我的英语不好,我很难完全理解网站学习正则表达式,但至少我试着写这篇文章。 请提供一些建议让我这样做。
我已经为printout输出写了一个函数,有些输出有一个(括号),我更喜欢将一些字符串重新输入到(括号)中。 现在我正在尝试使用python和正则表达式.replace和finditer。 但似乎不是我的一杯茶。谢谢你的帮助。
This is my output in my database:
interface fa(1)/(2)
ip address (1) (2)
这是我的功能
def readciscodevice(function, device)://here are some sqlite3 statement
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:") //First, I input function field from database
b = input("device:") //I need to input the name of my elif =="name"
p = re.compile('\(.*?\)') //I am not sure what it is doing...
s = "1"
iterator = p.finditer(s) //finditer is suitable to replace parentheses?
for match in iterator:
s = s[:match.start()] + s[match.start():match.end()].replace(match.group(), dict[match.group()]) + s[match.end()]
for result in readciscodevice(a,b):
print(result[0])
答案 0 :(得分:1)
尝试使用re.sub(pattern, repl, string)
代替re.compile
和finditer
来替换(1)和(2)。