python只匹配字符串中的中文以及数字和标点

不少朋友在作爬虫和数据采集的时候会碰见字符中存在不少的特殊字符,影响数据的质量。今天给你们写一段代码用于数据清洗:web

方法一:

info = ''
str = '<@ba.rem>能够在下列状态和初始状态间切换:</>\n攻击范围<@ba.vdown>缩小</>,防护力<@ba.vup>+{0.35}</>,每秒恢复最大生命的<@ba.vup>{HP_RECOVERY_PER_SEC_BY_MAX_HP_RATIO:0.0%}</>'.replace('<@ba.rem>', '').replace('<@ba.vdown>', '').replace('<@ba.vup>', '')
for n in range(0, len(str)-1):
    if '\u4e00' <= str[n] <= '\u9fff' or str[n] in ':,,:0123456789.%':
        info += str[n]
print(info)

输出结果:svg

能够在下列状态和初始状态间切换:攻击范围缩小,防护力0.35,每秒恢复最大生命的:0.0%

此程序是根据下标提取出每个字符,对字符进行中文验证和符号验证。code

方法二:

去掉全部表情包xml

pip install emoji

import emoji
emoji.demojize(str)

方法三:

去除全部非汉子的文本,并将繁体转化为简体ip

pip install zhconv

from re import sub
import zhconv,emoji
hans = sub("[^\u4e00-\u9fa5]", '', zhconv.convert(str, 'zh-hans'))