如何从元组列表轻松地将一个元组传递给startswith函数?

2024-10-03 21:24:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python中实现搜索和替换字符串的功能。我写了以下代码,但我的主要问题是将list转换成tuple。我在两个循环中实现了它,但是您能以更简单的方式帮助我将一个元组传递给startswith函数吗?(列表在rcsv_list变量中)

rman_config = ('''
RMAN configuration parameters for database with db_unique_name TEST are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
''')

rcsv_list = [('RETENTION POLICY', 'TO RECOVERY WINDOW OF 5 DAYS'), 
             ('CONTROLFILE AUTOBACKUP', 'ON'), 
             ('DEVICE TYPE', 'DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET')]

# unpack list of tuples to a single list
rcsv_tmp_list = []
for l in rcsv_list:
    for t in l:
        rcsv_tmp_list.append(t)

# convert list to tuple
rcsv_tuple = tuple(rcsv_tmp_list)

i = 0

for line in rman_config.splitlines():
    if line.startswith(rcsv_tuple, 10):
        line = 'CONFIGURE ' + rcsv_tuple[i] + ' ' + rcsv_tuple[i+1] + ';'
        i += 2
        print(line)
    else:
        print(line)

输出:

^{pr2}$

以上代码的主要思想是将一个元组传递给startswith函数,以便在rman_config字符串中进行搜索。为此,我创建了元组类型的rcsv_tuple变量。这段代码运行良好,但最后我还有两个问题:

  1. 不需要解包和隐藏变量就可以简化上述代码吗?换句话说,如何将一个元组从元组列表直接传递给startswith函数?

  2. 在这种情况下,是否有其他方法来搜索和替换字符串?

我总是得到rcsv_list变量作为元组列表,因为->;Cursor.fetchall()


Tags: to函数字符串代码default列表forconfigure
1条回答
网友
1楼 · 发布于 2024-10-03 21:24:39

可以将循环和元组的构造替换为:

rcsv_tuple = sum(rcsv_list, ())

您也可以直接迭代查询结果,而不是查询、拆分等:

^{pr2}$

最后,您可以独立于打印条件来消除子句。

相关问题 更多 >