Python将括号内的文本替换为

2024-10-01 04:55:24 发布

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

我有这样一个文件(或字符串,如果你想):

$((2+1))
bbb$((2+0))a()
$((1+1))$((5**2))
$((variable+1))

我希望输出是这样的(如果变量=1):

3
bbb2a()
225
2

基本上,首先我需要得到$((和))之间的文本,我使用以下方法:

re.search(rf"\$\(\((.*?)\)\)",template).group(1)

我需要用上一步得到的结果来替换所有的事件。我该怎么做?我能不能先编译正则表达式,然后用它来获取文本和替换文本?谢谢


Tags: 文件方法字符串文本researchgroup事件
1条回答
网友
1楼 · 发布于 2024-10-01 04:55:24

你不需要任何图书馆。您只需要使用python内置函数。你知道吗

m = ["$((2+1))","$((2+0))","$((1+1))aa$((5**2))bb","$((0+0))"]

def OPGetter(string) :
    i = 0
    while i < len(string) :
        if string[i] == ")" :
            last = i
        i += 1
    res1 = (string[last+1:])
    #
    i = 0
    while i < len(string) :
        if string[i] == "(" :
            one = i+1
        i += 1
    i = 0
    while i < len(string) :
        if string[i] == ")" :
            two = i
            break
        i += 1
    return [string[one:two],res1]

result =[]
i = 0
while i < len(m) :
    string = m[i].split("$")
    if len(string) > 0 :
        res = string[0]
        string = string[1:]
    for item in string :
        code = "def returning() :\n    return "+ OPGetter(item)[0]
        exec(code)
        value = returning()
        res += str(value)+OPGetter(item)[1]
    result.append(res)
    i += 1

结果将有最终的答案列表。你知道吗

相关问题 更多 >