ISEE小语
本次实例是四个处理文本的三方库,好用又实际,简单又方便。建议记着备用!
环境:
Pycharm
Python 3.9.16
pypinyin
pypinyin是一个Python三方库,用于将中文汉字转换为拼音。支持多种拼音风格,包括有声调的拼音、去声调、带声调的数字标记等。
我们来举实例了解一下,如下:
安装:
pip install pypinyin==0.50.0
导入:
from pypinyin import pinyin, Style
a、拼音是带声调的数字标记
使用pypinyin库的Style.TONE2样式,数字1、2、3、4分别代表声调的一声、二声、三声、四声。
text = "随风潜入夜,润物细无声"
pinyin_with_tones_num = ' '.join([''.join(item) for item in pinyin(text, style=Style.TONE2)])
print(f"拼音(带声调的数字标记): {pinyin_with_tones_num}")
(左右滑动查看完整代码)
结果:
b、拼音上面带声调
将声调放在每个拼音的字母上方,需要使用pypinyin库的Style.TONE样式,如下:
text = "随风潜入夜,润物细无声"
pinyin_with_tones = ' '.join([''.join(item) for item in pinyin(text, style=Style.TONE)])
print(f"拼音(拼音上面带声调): {pinyin_with_tones}")
(左右滑动查看完整代码)
结果:
c、汉字+拼音组合显示
text = "随风潜入夜,润物细无声"
pinyin_list = pinyin(text, style=Style.TONE)
text_pinyin_tones = ' '.join(f"{char}({tone})" for char, tone in zip(text, [''.join(item) for item in pinyin_list])).replace("(,)", "")
print(f"汉字+拼音: {text_pinyin_tones}")
(左右滑动查看完整代码)
结果:
opencc
opencc-python-reimplemented是OpenCC(Open Chinese Convert) 的 Python 实现,这是一个转换简体中文与繁体中文的工具。它是 OpenCC 的纯 Python 实现,这意味着你不需要安装 OpenCC 原生程序就可以在 Python 环境中使用它进行文本转换。
安装:
pip install opencc-python-reimplemented==0.1.7
导入:
from opencc import OpenCC
a、简体转换成繁体字
转换成繁体字使用OpenCC('s2t')
# 简体
text = "随风潜入夜,润物细无声"
# 转换成繁体字
def convert_to_traditional(chinese_text):
cc = OpenCC('s2t')
return cc.convert(chinese_text)
# 执行函数并输出结果
traditional_result = convert_to_traditional(text)
print(f"繁体字: {traditional_result}")
(左右滑动查看完整代码)
结果:
b、繁体转换成简体字
转换成简体字使用OpenCC('t2s')
# 繁体
text_ = "隨風潛入夜,潤物細無聲"
# 转换成简体字
def convert_to_simplified(chinese_text):
cc = OpenCC('t2s')
return cc.convert(chinese_text)
# 执行函数并输出结果
simplified_result = convert_to_simplified(text_)
print(f"简体字: {simplified_result}")
(左右滑动查看完整代码)
结果:
c、其他转换模式
除了 s2t 和 t2s 外,还有其他的参数:
s2t - 简体中文到繁体中文
t2s - 繁体中文到简体中文
s2tw - 简体中文到台湾正体
tw2s - 台湾正体到简体中文
s2hk - 简体中文到香港繁体
hk2s - 香港繁体到简体中文
t2tw - 繁体中文到台湾正体
t2hk - 繁体中文到香港繁体
cn2an
cn2an 是一个用于将中文数字转换为阿拉伯数字(an,Arabic Numerals)及其逆转换的库。这个库提供了简单易用的API来执行中文数字与阿拉伯数字之间的转换。
安装:pip install cn2an==0.5.22
导入:
import cn2an
a、中文数字转换为阿拉伯数字
# 中文数字转换为阿拉伯数字
text = "一百二十三点四"
result_an = cn2an.cn2an(text)
print(f"'{text}' 转换的结果是:{result_an}")
(左右滑动查看完整代码)
结果:
b、阿拉伯数字转换为中文数字
# 阿拉伯数字转换为中文数字
nums = 123.4
result_cn = cn2an.an2cn(nums)
print(f"'{nums}' 转换的结果是:{result_cn}")
(左右滑动查看完整代码)
结果:
zhon
zhon 是一个Python三方库,专门为处理中文文本设计。它提供了一组用于中文文本处理的资源,如中文字符、标点、汉字等。zhon 库非常有用,尤其是在需要识别或处理中文特定元素时,例如在中文文本分词、清洗数据以及文本分析等任务中。
安装:pip install zhon==2.0.2
导入:
from zhon import hanzi
a、筛选出中文标点
将一段文本中的所有中文标点筛选出来
text = "您好,是扶摇的鹰、是潜游的鱼;是白雪皑皑、是山川河流。还是什么?"
punctuation_pattern = '[{}]'.format(hanzi.punctuation)
chinese_punctuation = re.findall(punctuation_pattern, text)
# 打印出所有的中文标点符号
print("文本中的中文标点符号有:", chinese_punctuation)
(左右滑动查看完整代码)
结果:
b、将中文标点替换为英文标点
将一段文本中的所有中文标点,对应的替换为英文标点。
首先,需要做一个中英文标点符号映射表:
# 中英文标点符号的映射表
punctuation_mapping = {
',': ',',
'。': '.',
':': ':',
';': ';',
'!': '!',
'?': '?',
'“': '"',
'”': '"',
'‘': "'",
'’': "'",
'(': '(',
')': ')',
'【': '[',
'】': ']',
'—': '-',
'……': '...',
'、': ','
}
(左右滑动查看完整代码)
然后再添加一个替换函数来处理文本:
# 替换函数
def replace_punctuation(match):
return punctuation_mapping.get(match.group(0), '')
# 使用正则表达式和替换函数来转换标点符号
text_with_english_punctuation = re.sub(f'[{hanzi.punctuation}]', replace_punctuation, text)
print(text_with_english_punctuation)
(左右滑动查看完整代码)
结果:
c、判断中文字符
判断指定的字、词或成语是否为中文字符
text = '白雪皑皑'
if re.match('^[{}]+$'.format(hanzi.characters), text):
print('字符串 "{}" 仅包含中文字符'.format(text))
else:
print('字符串 "{}" 包含非中文字符'.format(text))
(左右滑动查看完整代码)
结果:
接下来再看一个对比一下,一目了然。
text = '白雪皑皑!'
if re.match('^[{}]+$'.format(hanzi.characters), text):
print('字符串 "{}" 仅包含中文字符'.format(text))
else:
print('字符串 "{}" 包含非中文字符'.format(text))
(左右滑动查看完整代码)
结果:
总结
最近实际项目中文本处理的涉及到的三方库,取4个相当好用的记录分享,不常见,却很好用。实现方式不是唯一的,找到适合的才是最佳的。
以上记录如有兴趣,请自行查阅官方资料并深入研究,功能都很强大。
寄语:世间三美,明月,清风,眼前……
看到这儿的朋友帮点个“赞”和“在看”,谢谢支持~!
文章就分享到这儿,喜欢就点个赞吧!