繁体   English   中英

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

[英]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”和“es ya una disstracción en esta ociosidad perdurable! (P126)”中删除 20 和 (P126)

对于两者,您都可以使用此功能

import re  

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

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

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

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

((P\\d+))以 '(P number )' 形式捕获字符串,其中number是任何正整数。

这 ? 标记表示之前的组是可选的。

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

请让我知道这个答案是否有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM