用ascii连字符"-"替换所有破折号类型

5
有没有办法用简单的ASCII字符“ - ”替换所有类型的连字符?我正在寻找像这样适用于空格的东西:
txt = re.sub(r'[\s]+',' ',txt)

我认为一些非ASCII的连字符“-”会影响正确地去除某些特定停用词(由连字符连接的项目名称)的过程。

例如,我想将AR–L1003替换为AR-L1003,但我希望对整个文本进行替换。


1
你能分享一下你想要替换的数据样本和期望的结果吗? - ParvBanks
1
为什么不查找所有存在的连字符(https://en.wikipedia.org/wiki/Hyphen#Unicode),并将它们放入一个正则表达式 [ ]+ 中? - trincot
@trincot 是的,那就是我的问题。我想知道是否有一种方法可以识别所有的连字符!也许没有! - DanielTheRocketMan
1个回答

4
你可以将这些连字符列在一个类中。以下是可能的列表 - 根据你的需要进行扩展:
txt = re.sub(r'[‐᠆﹣-⁃−]+','-',txt)

标准的re库不支持使用\p语法来匹配Unicode类别,但如果您可以导入regex,那么就有可能实现:

import regex

txt = regex.sub(r'\p{Pd}+', '-', txt)

正则表达式会取代re吗? - user1602492
2
请查看 添加支持Matthew Barnett Python正则表达式模块。还可以阅读Guido van Rossum在2011年就该主题发表的讲话(链接) - trincot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接