Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将数据输入到输出的(括号)中_Python_Sqlite - Fatal编程技术网

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

Python 如何将数据输入到输出的(括号)中,python,sqlite,Python,Sqlite,我已打印输出,例如: enable configure terminal interface fa(fanumber)/(fanumber) ip adress (ip) (subnet mask) no shutdown 我想在所有括号中输入新数据: 在我的例子中,这些是: (fanumber)/(fanumber) (ip) (subnet mask) 我需要在当前函数中编写更多代码还是编写新函数 我该怎么做 我目前的职能是: def readciscodevice(function,

我已打印输出,例如:

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) 
进入


不确定我是否完全理解您的问题,但要在括号之间的文本中找到任何内容,您可以尝试以下方法:

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)
但是请注意,一旦括号中的单词可以嵌套(例如“some(words in(括号中的单词)),这将无法很好地工作。此外,它不会捕获示例中的除法字符。我猜你必须编写一些异常/一个更复杂的正则表达式来捕获一些数学运算符

更新:

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

@谢谢你的建议!也许我没有把我的话解释清楚。我想在接口fa(fanumber)/(fanumber)ip地址(ip)(子网掩码)中重新输入数据,并将结果设置为fa0/1 ip地址192.168.1.1(啊,oke。在这种情况下,我假设您有一个字典将“子网掩码”映射到255.255.255.0(以及ip地址的一些键,等等)。在迭代器中找到的匹配也有开始和结束,所以我会尝试类似的方法(没有测试过,如果有管理员可以告诉我如何在注释中正确显示代码,那就太好了!)迭代器=p.finditer(s);对于迭代器中的匹配:s=s[:match.start()]+s[match.start():match.end()]。替换(match.group(),dict[match.group()])+s[match.end()]谢谢;再次更新。再次查看,我怀疑这可能不是您想要的,它可能只会替换在迭代器中找到的最后一个匹配项。但是,如果我要解决您的问题,我至少会按照以下几行操作。@lgor我将再次更新,因为我无法运行您的代码,因为我遇到了以下问题,现在我正在尝试解决这些问题我也需要。当前在/之前和之后被称为“fanumber”的值是两个不同的值…例如:fa0/1、fa1/1或fa1/24。此外,“address”需要拼写为“address”,否则命令将失败。
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()]