用 ascii 连字符“-”替换所有连字符类型
Posted
技术标签:
【中文标题】用 ascii 连字符“-”替换所有连字符类型【英文标题】:Replace all hyphen types by the ascii hyphen "-" 【发布时间】:2019-05-14 00:38:29 【问题描述】:有没有办法用简单的ascii“-”替换所有类型的连字符? 我正在寻找适用于空间的类似内容:
txt = re.sub(r'[\s]+',' ',txt)
我相信一些非 ascii 的“-”连字符正在避免删除某些特定停用词(由连字符连接的项目名称)的正确过程:
我想用 AR-L1003 替换这个 AR-L1003',但我想对整个文本都这样做。
【问题讨论】:
您能分享一个您希望替换的数据样本和预期结果吗? 为什么不查找所有存在的连字符 (en.wikipedia.org/wiki/Hyphen#Unicode) 并将它们放入正则表达式[ ]+
?
@trincot 是的,那是我的问题。我想知道是否有类似 \s 的方法来识别所有连字符!也许没有!
【参考方案1】:
您可以在一个类中列出这些连字符。这是一个可能的列表——根据您的需要进行扩展:
txt = re.sub(r'[‐᠆﹣-⁃−]+','-',txt)
标准的re
库不支持\p
语法来匹配unicode类别,但是如果可以导入regex
,那就可以了:
import regex
txt = regex.sub(r'\pPd+', '-', txt)
【讨论】:
将regex
替换re
吗?
见Add support for Matthew Barnett python regex module。另请阅读 Guido van Rossum 关于该主题的演讲 back in 2011以上是关于用 ascii 连字符“-”替换所有连字符类型的主要内容,如果未能解决你的问题,请参考以下文章