您好,我正在一个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之间的_符号。
有什么办法可以做到这一点?
答案 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])_
英语:“下划线之前或之后不是数字”
?<=表示之前的是要捕获的组
?=表示关注是要捕获的组