首页 > 解决方案 > Python为sqlnet.ora中的多行文本制作oneliner

问题描述

我有以下文字:

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(MD5,SHA1)
WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=/oracle/.wallets)
)
)
SQLNET.WALLET_OVERRIDE=TRUE

并希望得到它:

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(MD5,SHA1)
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/oracle/.wallets)))
SQLNET.WALLET_OVERRIDE=TRUE

使用本机 Python(没有额外的外部包)最有效的方法是什么?

可以有其他多行参数。而且我事先不知道他们可以有多少括号。

编辑1。我不需要确切的解决方案。至少只是一个算法。

标签: pythonpython-3.x

解决方案


您可以做的一种方法是使用行号作为开始和结束,然后连接它们之间的所有行。顺便说一句,我将您的文本保存在一个文件中,但您也可以直接将其提供给代码。

file1 = open('myfile.txt', 'r') 
Lines = file1.readlines() 

count = 0
lineNumStart, lineNumEnd = 1, 7
outStringJoined = ""
for line in Lines: 
    if count>=lineNumStart and count<lineNumEnd:
        outStringJoined += line.strip()
    else:
        outStringJoined += line
    count+=1
print(outStringJoined)

为了使其更灵活,可以使用 ("(", ")") 之类的对。如果找到该对的第一个元素,则代码将继续连接,直到找到匹配的对!


推荐阅读