【问题标题】:Matching everything but words, numbers and spaces匹配除单词、数字和空格之外的所有内容
【发布时间】:2011-09-04 17:01:52
【问题描述】:

此代码将替换除单词之外的所有内容,但我如何让它保持数字和空格不变?例如“我直到 1 点才见到他。” -> “我直到 1 点才见到他”

text = regex.sub("\P{alpha}+","",text)

【问题讨论】:

    标签: regex python-3.x


    【解决方案1】:

    不要在 Unicode 上使用 Python 的 re 库。它工作得非常糟糕。请改用Matthew Barnett’s regex library。它工作得更好,更好。

    它还可以在 Python 2 和 3 以及窄版本和宽版本上运行,但出于与该特定库很大程度上无关的原因,我强烈建议您仅运行 Python 3 的宽版本并避免使用所有其他组合。

    【讨论】:

      【解决方案2】:

      Python 正则表达式不支持 Unicode 属性。你可以试试:

      text = re.sub("[^a-zA-Z0-9 ]+","",text)
      

      相反。如果你确实安装了Ponyguruma 之类的东西,你可以使用:

      text = re.sub("[\P{Alnum}\PZ]+","",text) # pZ is shorthand for p{Separator}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多