gpt4 book ai didi

python - 删除字母数字词,Python 3 中有一些异常(exception)

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:18 27 4
gpt4 key购买 nike

我试图通过删除字母数字词(同时包含字母和数字的词)来清理 Python 3 中的一些文本主体,但我希望在文本中保留一些异常(exception)情况。以下代码从文本中删除所有字母数字词:

import re

string1 = "3n3k game gnma34 xbox360 table"
string2 = "the a22b b3kj3 ps4 2ij2aln potato"

new_string1 = re.sub(r'\w*\d\w*', '', string1)
new_string2 = re.sub(r'\w*\d\w*', '', string2)

上面的代码生成了 new_string1 和 new_string2,它是“游戏 table ”,new_string2 是“土 bean ”。我需要的是将 new_string1 设为“游戏 xbox360 表”,并将 new_string2 设为“ps4 土 bean ”。

我想我可以创建一个异常数组,例如:

exceptions = ['xbox360', 'ps4'] #there may be many more exceptions than this

但我不太确定如何将这个异常列表合并到我的正则表达式中(我对这个概念还很陌生)。非常感谢任何见解!

最佳答案

使用否定前瞻。负先行是零长度:它不匹配任何东西;它要么成功要么失败,并且在完成后,光标仍位于之前的位置。因此,您想检查单词边界 (\b),检查以下文本是否不在您的异常(exception)列表中 ((?!...)) ,并使用您现有的正则表达式来匹配单词 (\w*\d\w*)。

要构造前瞻的主体,只需将 exceptions 的元素与中间的 | 连接在一起,或者只是将 exceptions 设为一个匹配您要直接保留的单词的正则表达式。

我对 Python 不太熟悉,所以这里是示例中的正则表达式应该是什么样子,我希望你能概括一下:

\b(?!xbox360|ps4)\w*\d\w*

去除空格

" ".join(re.sub(r'\b(?!xbox360|ps4)\w*\d\w*'," ",string1).split())

关于python - 删除字母数字词,Python 3 中有一些异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46985185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com