条件字符串插入

2024-06-16 08:49:57 发布

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

我们可以写一个Python程序来

2.4 Threads /35,Black,notBold,notItalic,closed,TopLeftZoom,0,0,0.0
      2.4.1 Multithreading/35,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
          2.4.4.1 Hierarchical Design 28/39,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0

进入

2.4 Threads 24/35,Black,notBold,notItalic,closed,TopLeftZoom,0,0,0.0
      2.4.1 Multithreading 24/35,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
          2.4.4.1 Hierarchical Design 28/39,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0

要点是:

  1. 每行有一个/,后跟一个数字和一个逗号。

  2. 如果/前面没有数字,那么在/前面加上减11的数字。

  3. 如果在/前面已经有一个数字了,那就别管这行了。


Tags: 程序数字openblackdesignclosed逗号要点
1条回答
网友
1楼 · 发布于 2024-06-16 08:49:57

您可以使用RegEx (\s*\d*)/(\d+)来捕获/周围的两个数字,然后根据您的条件用一个自定义函数替换第一个数字,如下所示

def replacer(matchobj):
    if matchobj.group(1).lstrip() == "":
        return " {}/{}".format(int(matchobj.group(2)) - 11, matchobj.group(2))
    else:
        return "/".join(matchobj.groups())

print(re.sub(r"(\s*\d*)/(\d+)", replacer, data))

输出

2.4 Threads 24/35,Black,notBold,notItalic,closed,TopLeftZoom,0,0,0.0
      2.4.1 Multithreading 24/35,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
          2.4.4.1 Hierarchical Design 28/39,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0

RegEx (\s*\d*)/(\d+)表示匹配零个或多个空格,后跟零个或多个数字,后跟/字符,然后是一个或多个数字。你知道吗

相关问题 更多 >