首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除文本中单词末尾可能出现的数字?

如何删除文本中单词末尾可能出现的数字?
EN

Stack Overflow用户
提问于 2019-01-02 15:55:17
回答 5查看 69关注 0票数 0

我有文本数据要清理使用regex。然而,文本中的一些词后面紧跟着我想要删除的数字。

例如,文本的一行是:

Preface2 Contributors4 Abrreviations5 Acknowledgements8 Pes terminology10从RUPES project12环境服务支付中吸取的经验教训及其在Vietnam16章节中的潜力和榜样--将生态系统服务支付纳入越南政策和programmes17章节--为Tri流域创建激励机制,在巴赫马州国家公园为景观美景提供可持续融资24章建立林业碳固存支付机制,这是霍平省曹丰区的一个试点项目,第五章,地方税收共享,内川湾海洋保护区,Vietnam28综合和Recommendations30 References32 References32

以上文章的第一个词应该是“前言”,而不是“preface2”等等。

代码语言:javascript
复制
line = re.sub(r"[A-Za-z]+(\d+)", "", line)

然而,这就删除了以下几个字:

Pes从RUPES环境服务支付中吸取的经验教训及其在将生态系统服务支付纳入越南政策和章节中的潜力和范例-在巴哈马州国家公园24分水岭建立森林固碳支付机制-第五章地方财政收入分享- Nha Trang Bay海洋保护区综合综合和

我怎么能只捕捉那些紧跟在单词后面的数字呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-01-02 16:03:22

您可以捕获文本部分,并将该单词替换为捕获的部分。它简单地写道:

代码语言:javascript
复制
re.sub(r"([A-Za-z]+)\d+", r"\1", line)
票数 1
EN

Stack Overflow用户

发布于 2019-01-02 16:01:31

您可以尝试查看前面的断言,以在数字之前检查单词。在强制regex只匹配单词末尾的数字时,尝试单词边界(\b):

代码语言:javascript
复制
re.sub(r'(?<=\w+)\d+\b', '', line)

希望这能有所帮助

编辑:不好意思,小故障,在评论中提到的匹配数字,也没有被文字所取代。这是因为(再次抱歉) \w匹配字母数字字符,而不是只匹配字母数字字符。根据要删除的内容,可以使用肯定的版本。

代码语言:javascript
复制
re.sub(r'(?<=[a-zA-Z])\d+\b', '', line)

仅检查英文字母字符(可以将字符添加到a列表),请在数字或负数之前添加字符。

代码语言:javascript
复制
re.sub(r'(?<![\d\s])\d+\b', '', line)

若要匹配所需数字之前的\d (数字)或\s (空格)的任何内容,请执行以下操作。这也将匹配标点符号,不过。

票数 1
EN

Stack Overflow用户

发布于 2019-01-02 16:05:19

试试这个:

代码语言:javascript
复制
line = re.sub(r"([A-Za-z]+)(\d+)", "\\2", line) #just keep the number    
line = re.sub(r"([A-Za-z]+)(\d+)", "\\1", line) #just keep the word
line = re.sub(r"([A-Za-z]+)(\d+)", r"\2", line) #same as first one    
line = re.sub(r"([A-Za-z]+)(\d+)", r"\1", line) #same as second one

1将与单词匹配,\2匹配数字。请参阅:How to use python regex to replace using captured group?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54009329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档