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

时间:2018-09-08 02:36:11

标签: python regex nlp

您好,我正在一个NLP项目中工作,需要从文本中标识实体/组织名称。但是,字符串中的单词由(_:,)字符连接起来,如下所示:

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之间的_符号。

有什么办法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

尝试使用

(?<=\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

答案 1 :(得分:0)

此正则表达式可以解决问题:

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

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

?<=表示之前的是要捕获的组

?=表示关注是要捕获的组