如何从字符串中删除数字和括号?
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)。
请告诉我这个答案是否有用。
我有以下问题,我的文本中有这样几行:
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)。
请告诉我这个答案是否有用。