zoukankan      html  css  js  c++  java
  • 正则文本过滤时的一些注意事项

    目的是要过滤掉特殊符号,只保留常规的中文、英文、数字,例如各种表情符号是要过滤掉的

    中文范围:u4e00-u9fa5
    英文范围:a-zA-Z
    数字范围:0-9

    在正则中,用w可以代码普通的字符,用d可以代替数字,但在实践中发现,如果在过滤中使用wd来代替的话,有一些特殊字符中会被保留的,也就是没有如期被过滤掉。
    当然也可能是我的用法不对,有人知道的话请指正。

    如下一个特殊字符:

    其ASCII码是u0e51,经测试,如果用w来过滤,它是不会被过滤掉的,意思是它属于w的范围,代码如下(Python语法):

    ss = '(๑•̀㉨•́ฅ✧ 早U小我ki↖义ir.u9↖↖〉ik梯△建迷Ⅰ‘(‘汁li义嫩∵迷☆迷茫期末考试o人又寸义√近近oiii`相义消心o义↖失过了↖义'
    re.sub('[^wdu4e00-u9fa5]', '', ss)
    

    输出:

    ๑ฅ早U小米ki义iru9ik梯建迷Ⅰ汁li义嫩迷迷茫期末考试o人又寸义近近oiii相义消心o义失过了义
    

    正则里面用的是wd,注意替换后开头的两个特殊符号还在。

    下面把w改为 a-zA-Z

    ss = '(๑•̀㉨•́ฅ✧ 早U小我ki↖义ir.u9↖↖〉ik梯△建迷Ⅰ‘(‘汁li义嫩∵迷☆迷茫期末考试o人又寸义√近近oiii`相义消心o义↖失过了↖义'
    re.sub('[^a-zA-Zdu4e00-u9fa5]', '', ss)
    

    输出:

    ๑早U小米ki义iru9ik梯建迷汁li义嫩迷迷茫期末考试o人又寸义近近oiii相义消心o义失过了义
    

    前一次输出中的第2个特殊字符没有了。再把d替换为0-9:

    ss = '(๑•̀㉨•́ฅ✧ 早U小我ki↖义ir.u9↖↖〉ik梯△建迷Ⅰ‘(‘汁li义嫩∵迷☆迷茫期末考试o人又寸义√近近oiii`相义消心o义↖失过了↖义'
    re.sub('[^a-zA-Z0-9u4e00-u9fa5]', '', ss)
    

    输出:

    早U小米ki义iru9ik梯建迷汁li义嫩迷迷茫期末考试o人又寸义近近oiii相义消心o义失过了义
    

    开头的特殊字符都没有了

  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/python_filter_special_character.html
Copyright © 2011-2022 走看看