替换字符串中不需要的特殊字符,保留两个数字之间的特殊字符

2024-05-15 21:08:05 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我在一个NLP项目,我需要从文本中识别实体/组织名称的工作。但是,字符串中的单词是用(216;:,)字符串联的,如下所示:

RING_LECO:108_.250X.436X.093V_772_520

我想按如下方式清理字符串:

Ring Leco 108 .250X.436X.093V 772_520

我们删除了两个单词之间的特殊字符(A-Z:A-Z,A-Z:0-9),但保留了772和520之间的uu符号

有没有办法让我这么做


Tags: 项目字符串文本实体名称nlp方式符号
2条回答

这个正则表达式应该做到:

_([^0-9]?<=)|(?=[^0-9])_

在英语中:“下划线之前或之后不是数字”

?<;=也就是说,在之前的就是要捕获的组

?=意味着接下来的就是要捕获的组

尝试使用

(?<=\D)[_:,]|[_:,](?=\D)

\D表示非数字字符,因此模式匹配至少一侧具有非数字字符的特殊字符(_:,

str = 'RING_LECO:108_.250X.436X.093V_772_520'
pattern = re.compile(r'(?<=\D)[_:,]|[_:,](?=\D)')
print(pattern.sub(' ', str))

输出:

RING LECO 108 .250X.436X.093V 772_520

相关问题 更多 >