如何去掉字符串中不需要的字符
来源:互联网 发布:java包名可以大写 编辑:程序博客网 时间:2024/05/20 23:33
实际案例
- 过滤掉用户输入中前后多余的空白字符:” hello ”
- 过滤某Windows系统下某编辑文件应用在编辑文本时插入的”\r”
解决方案:
- 方法一:字符串strip(),lstrip()和rstrip()方法去掉字符串两端,左边和右边的字符;
- 方法二:删除单个固定位置的字符,可以使用切片+拼接的方式;
- 方法三:字符串的replace()方法或正则表达式re.sub()删除任意位置字符。
# -*- coding: utf-8 -*-import res1 = " hello "# 方法一print s1.strip()s2 = "hello\r\n"# 方法二print s2[:-2]# 方法三,replace()print s2.replace("\r", "")# 方法三,sub.re()print re.sub("[\r]", "", s2)
运行结果为:
hellohellohellohello
注:本文实际案例中有一特殊案例,本人在Windows系统和Linux系统下都未成功解决,希望阅读此文的大佬能帮忙解惑,谢谢!
问题为如何去除Unicode中组合字符(音调):’zhào’。
查阅相关教程得知此问题宜采用translate()方法,其代码如下:
u = u'zhào'print u.translate({0xe0:None})
其输出结果为:
zho
输出结果中‘zhào’的‘à’去除了,但我们本意是去除‘a’的音调。除此之外,本方法有个问题就是需要事先知道Unicode中组合字符的ASCII。对于这个问题,我们可在shell下得知,但若在Python 3.X版本中就无法通过shell得知。
根据北门吹雪(O(∩_∩)O谢谢)的博客可得到Python 3.X版本的解决办法,其代码如下:
import sysimport unicodedatau = "Zhào"''' 通过使用dict.fromkeys() 方法构造一个字典,每个Unicode和音调作为键,对于的值全部为None 然后使用unicodedata.normalize() 将原始输入标准化为分解形式字符 sys.maxunicode : 给出最大Unicode代码点的值的整数,即1114111(十六进制的0x10FFFF)。 unicodedata.combining:将分配给字符chr的规范组合类作为整数返回。 如果未定义组合类,则返回0。'''s = unicodedata.normalize('NFD', u)cmb_chrs = dict.fromkeys(c for c in range(sys.maxunicode) if unicodedata.combining(chr(c)))''' 调用translate 函数删除所有音调'''print(s.translate(cmb_chrs))
运行结果为:
Zhao
Python 2.X的版本的代码如下:
import sysimport unicodedatau = u'zhào's = unicodedata.normalize('NFD', u)cmb_chrs = dict.fromkeys(c for c in range(sys.maxunicode) if unicodedata.combining(unichr(c)))print s.translate(cmb_chrs)
运行结果与Python 3.X版本的结果一致。
阅读全文
0 0
- 如何去掉字符串中不需要的字符
- 4-6如何去掉字符串中不需要的字符
- python-16-如何去掉字符串中不需要的字符?
- 去掉字符串中不需要的字符
- 去掉字符串中不需要的字符
- JS如何去掉字符串里面不需要的字符
- python 4-6 如何去掉字符串中不需要的字符strip('-+*')/lstrip()/rstrip()/切片分段+/replace/sub/translate
- 从字符串中删除不需要的字符
- c#一个字符串中如何去掉相同的字符
- 去掉字符串中重复的字符
- 去掉字符串中重复的字符
- javascript去掉字符串中重复的字符
- javascript去掉字符串中重复的字符
- PHP字符串中间去掉不需要的逗号
- ORACLE从字符串中删除不需要的字符
- C#中如何去掉字符串最后两位指定字符
- 如何去掉桌面上不需要的标签
- 在javascript中如何去掉空字符(空格的字符串)
- C++ Special: 四种类型转换
- SAPUI5教程——实现倒计时控制Button是否可以点击效果
- 操作系统学习笔记-信号量及PV操作与进程互斥和消费者生产者问题
- 基于RHEL下的oracle集群在线扩容存储
- Java中Collections.sort()排序详解
- 如何去掉字符串中不需要的字符
- 存储过程的作用是什么?
- JDBC为什么要使用PreparedStatement而不是Statement
- JVM内存管理的机制
- 关于在集成显卡下使用OpenGL碰到的坑
- JSON快速入门(Java版)--慕课网笔记
- characterController OnCollisionEnter OnTriggerEnter 的总结(二)
- C++ Special:const关键字和常量指针 vs 指针常量
- 关于glm数学库的坑