gpt4 book ai didi

python - 如何轻松地将元组列表中的单个元组传递给startswith函数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:27 26 4
gpt4 key购买 nike

我想在Python中实现搜索和替换字符串的功能。我编写了以下代码,但我的主要问题是将列表转换为元组。我通过两个循环实现了它,但是你能帮我以一种更简单的方式将元组传递给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)

输出:

RMAN configuration parameters for database with db_unique_name TEST are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;

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

  1. 可以在不解包和隐藏变量的情况下简化上面的代码吗?换句话说 - 如何将元组直接从列表传递到 startswith 函数元组?

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

PS。我总是将 rcsv_list 变量作为元组列表,因为 -> Cursor.fetchall()

最佳答案

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

rcsv_tuple = sum(rcsv_list, ())

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

cursor.execute(sql)
for row in cursor:
# ...

最后,您可以消除 else 子句,因为您的打印与条件无关。

关于python - 如何轻松地将元组列表中的单个元组传递给startswith函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22613378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com