如何从字符串中删除数字和括号?

How to remove numbers and parenthesis from string?

我有以下问题,我的文本中有这样几行:

20   luz de las remotísimas estrellas.

当我说“像这样”时,我的意思是左边的数字表示章节的行数。 我也有一些行是这样的:

es ya una distracción en esta ociosidad perdurable!           (P126)

有线条表示本书的新页。

问题是,有没有一种简单的方法可以从行中删除那些数字和括号? 我已经使用正则表达式消除了里面有数字的“[]”,但我并不完全理解它。

您可以使用群组

在这种情况下,我假设您想从“20 luz de las remotísimas estrellas”中删除 20,从“es ya una distracción en esta ociosidad perdurable! (P126)”中删除 (P126)

两者都可以使用此功能

import re  

def clean_line(line):
  regex = r"(\d*)?([^\(]*)(\(P\d+\))?"
  return re.match(regex, line).group(2)

这里我们进行分组,使用正则表达式你可以使用括号对匹配的部分进行分组,实际上我们在这个正则表达式中得到了三组:

(\d*) 捕获任意数量的数字。

([^(]*) 捕获一个字符串,直到它找到一个 '('

((P\d+)) 捕获格式为 '(Pnumber)' 的字符串,其中 数字是任意正整数。

那个?标记表示前面的组是可选的。

由于我们对第二组感兴趣,而 0 组是为整个正则表达式捕获的字符串,我们在 in 上调用 group(2)。

请告诉我这个答案是否有用。