1. 判断中文

1
2
3
4
5
6
7
8
def is_chinese(uchar):
"""判断一个unicode是否是汉字"""
return '\u4e00' <= uchar <= '\u9fa5'


def is_chinese_string(string):
"""判断是否全为汉字"""
return all(is_chinese(c) for c in string)

2. 中英韩日字符

函数 说明
\u4e00-\u9fa5 汉字的unicode范围
\u0030-\u0039 数字的unicode范围
\u0041-\u005a 大写字母unicode范围
\u0061-\u007a 小写字母unicode范围
\uAC00-\uD7AF 韩文的unicode范围
\u3040-\u31FF 日文的unicode范围

3. 过滤掉非中、英、数字字符

1
2
3
def clean(x: str):
str_text = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])", "", x)
return str_text

4. 正向反向提取

这个在BELLE项目提取chatGPT生成的数据里面有涉及到。

1
2
3
intruction_pattern = re.compile(r"(?<=(?:" + '|'.join(['指令:', '指令:']) + "))[\s\S]*?(?=" + '|'.join(['输入:', '输入:']) + ")")
input_pattern = re.compile(r"(?<=(?:" + '|'.join(['输入:', '输入:']) + "))[\s\S]*?(?=" + '|'.join(['输出:', '输出:']) + ")")
output_pattern = re.compile(r"(?<=(?:" + '|'.join(['输出:', '输出:']) + "))[\s\S]*?(?=$)")

资源

正则表达式