python正则表达式应用程序(替换具有(括号)的输出。)

时间:2015-04-19 15:31:03

标签: python regex

因为我没有清楚地解释我的问题。我会尝试解释我想在程序中做些什么。

  1. 我创建了一个在python中构建的sqlite数据库。我把表分为三种领域。 commandkey B.command C. function [命令功能]
  2. 2.要从我的程序中选择一系列命令,我需要编写一个函数readciscodevice(没有正则表达式)。

    1. 此功能可以打印一系列命令,例如 输出A:
    2. 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)后,该命令将起作用。

      1. 现在我尝试使用正则表达式将一些字符串输入到输出A中的(1)和(2)中。 这是我添加正则表达式后的预期结果:
      2.     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])
        

1 个答案:

答案 0 :(得分:1)

尝试使用re.sub(pattern, repl, string)代替re.compilefinditer来替换(1)和(2)。