python常用文本串处理库学习笔记
时间:2022-07-22
本文章向大家介绍python常用文本串处理库学习笔记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
以下就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值
def pre_process(text):
"""
文本预处理:
1. 删除掉符号
2. 大写转小写s
:param text:
:return:
"""
text = del_pun(text) # 删除符号
text = text.lower() # 英文转小写
text = text2list(text) # 字符串转序列
# todo 将itn转换过来
return text
def is_equal(ref,hyp):
"""
比较两个短文本是否等价
:param ref:
:param hyp:
:return:
"""
ref = del_pun(ref) # 删除符号
ref = ref.lower() # 英文转小写
hyp = del_pun(hyp) # 删除符号
hyp = hyp.lower() # 英文转小写
if ref == hyp:
return True
else:
return False
def del_pun(text):
"""
删除文本中的特殊符号
:param text:
:return:
"""
list_pun = (",",
",",
"。",
"《",
"》",
"“",
"”",
"?",
"?",
"(",
")",
"(",
")",
"!",
"!",
":",
";",
";",
"……",
"…",
"、",
"@",
"[",
"]",
"_",
"*",
"-",
"&",
"×",
"·",
"t",
"n") # 需要过滤的标点:×
stra = ''
for word in text:
if word in list_pun:
continue
else:
stra += word
stra = stra.strip() # 去掉首尾空格
return stra
def is_upper_eng_char(uchar):
"""
unicode大写字母
:param uchar:
:return:
"""
if 'u0041' <= uchar <= 'u005a':
return True
return False
def is_lower_eng_char(uchar):
if 'u0061' <= uchar <= 'u007a':
return True
return False
def is_eng_char(uchar):
"""
字符是否是英文,英文的Unicode编码
:param uchar:
:return:
"""
if is_upper_eng_char(uchar) or is_lower_eng_char(uchar):
return True
return False
def is_num_char(uchar):
return True if 'u0030' <= uchar <= 'u0039' else False
def is_cjk_char(uchar):
"""
文本中是否包含非中文,CJK Unified Ideographs (4E00–9FFF) wiki
汉字的unicode范围是:0x4E00~0x9FA5
:param uchar:
:param text:
:return:
"""
return True if 'u4E00' <= uchar <= 'u9FA5' else False
def hasNum(text):
"""
文本中是否包含数字
:param text:
:return:
"""
for uchar in text:
if is_num_char(uchar):
return True
return False
def text2list(text):
"""
将文本的每个字符转换成list,英文单词算一个字符,以空格作为区分
:param text:
:return:
"""
tlist = []
lastEng = False
begin = 0
for i in range(len(text)):
# print(text[i], isEng(text[i]))
if i == (len(text) - 1):
if lastEng and is_eng_char(text[i]):
tlist.append(text[begin:])
elif lastEng and not is_eng_char(text[i]):
tlist.append(text[begin:i])
tlist.append(text[i])
else:
tlist.append(text[i])
break
if lastEng:
if not is_eng_char(text[i]):
tlist.append(text[begin:i].strip())
if text[i] != ' ':
tlist.append(text[i])
lastEng = False
else:
if is_eng_char(text[i]):
begin = i
lastEng = True
else:
if text[i] != ' ':
tlist.append(text[i])
return tlist
class MyTest(TestCase):
def test_hasNum(self):
self.assertTrue(hasNum('ab3de好不好'), msg='应该存在数字')
self.assertFalse(hasNum('ab不好'), msg='应该不存在数字')
if __name__ == '__main__':
print(del_pun('AB-C'))
- 熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker
- 源码级别解读 mybatis 插件
- 在WebKit中并行加载外部脚本译:
- 100行代码,搞定http监控框架
- 【腾讯反病毒实验室】深度剖析APT28最新作品
- [译]clearfix改良及overflow:hidden详解
- 深入解析CSS样式层叠权重值
- [译]CSS边框实现“无图化”设计
- 自适应的多列图文混排改进
- [译]Laravel 5.0 之运行环境及环境变量
- 90行代码,搞定日志监控框架
- Laravel Migrate 中的 Fresh 和 Refresh 命令
- 框架组件,究竟要不要自研?
- Nginx泛解析到子目录,自动判断有无public目录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MYSQL数据优化常用配置参数
- Hadoop分块存储解析及还原分块存储的文件
- ValueError: too many values to unpack (expected 2)
- VMware15更新后克隆Centos7发现网卡起不来了
- 基于SSH的医院在线挂号
- Linux-远程拷贝(scp命令)
- Kettle使用JavaScript代码处理数据
- Hadoop入门---(wordcount)统计单词出现的次数
- JS去除字符串的空格
- insertionSoft(插入排序) 2.1-1 And 重写insertionSoft 2.1-2
- Swagger-Springboot-mybatis-mysql
- Python+java+websocket+SpringMVC实时监控数据库中的表
- 基于Java图形界面的IPV4与网址的地址解析器
- 如何在千里之外能访问自己的电脑?(FRP)
- 三分钟Docker-镜像、容器实战篇