如何在python中剪切字符串的特定部分

时间:2019-10-04 10:08:03

标签: python regex string

我正在寻找一种使用正则表达式剪切字符串的方法

例如,如果我有以下字符串

abcde.dhsjd.djshdj.(2019).(14856p).abdjskf

我想得到:

 abcde dhsjd djshdj 2019

我已经有关注

    file_sub = re.sub(r'[\.()]+', ' ', file)
    split_file= re.split(r'[\d+]', file)

当我运行代码时,它会在4位数字之前中断。 像这样:

 abcde dhsjd djshdj

有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

re.sub与回调函数一起使用:

inp = "abcde.dhsjd.djshdj.(2019).(14856p).abdjskf"
def cb(m):
    return m.group(1).replace('.', ' ') + m.group(2)

output = re.sub('^(.*?)\((\d+)\).*$', cb, inp)
print(output)

此打印:

abcde dhsjd djshdj 2019

此处的策略是将两个单独的捕获组中的第一个点分隔的部分和年份匹配。然后,在回调函数中,将点替换为空格并连接在一起。