如何将数据输入到输出的(括号)中

时间:2015-04-14 02:01:09

标签: python sqlite

我打印了一个输出,例如:

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

1 个答案:

答案 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()]