分享

如何去掉字符串中不需要的字符?

 昵称70813452 2020-07-11

需求:
1、过滤用户输入中前后多余的空白字符
' nick2008@email.com '
2、过滤某windows下编辑文本中的'\r':
'hello world\r\n'
3、去掉文本中的unicode组合符号(音调):
tiān xià dì yī
思路:
1、字符串strip(),lstrip(),rstrip()方法去掉字符串两端字符
2、删除单个固定位置字符,可以使用切片+拼接的方式
3、字符串的replace()方法或者正则表达式re.sub()删除任意位置字符
4、字符串的translat()方法,可以同时删除多种不同字符

代码:

s1 = '   nick2008@email.com   '
s2 = '---abc+++'
# strip()去除字符串首尾两端的字符,默认为空白字符。
print(s1.strip())
print(s2.strip('-+'))

s3 = 'abc:123'
#删除字符串中的:
print(s3[:3]+s3[4:])

s4 = '\tabc\t123\txyz'
#删除字符串的\t
print(s4.replace('\t',''))

s5 = '\tabc\t123\txyz\ropq\r'

# 去除字符串中的\t\r
项目 方法
7o59q Vs8Ao2687
8FOJl 2007.10.16 03-51-42
IsekJ 安逸花借钱可靠吗
864uG 2007/06/01 09:49:45
uRBdD Aer8B4359
import re ret = re.sub('[\t\r]','',s5) print(ret) s6 = 'abc1230323xyz' #将字符串的a-->x,b-->y,c-->z,x-->a,y-->b,z-->a # 生成映射表 table = str.maketrans('abcxyz','xyzabc') # 使用translate的方法,完成这个映射的功能 ret2 = s6.translate(table) print(ret2) s7 = 'tiān xià dì yī' # 去除字符串的音调 import sys import unicodedata remp = { # ord返回ascii值 ord('\t'): '', ord('\f'): '', ord('\r'): None } # 去除\t,\f,\r s7.translate(remp) ''' 通过使用dict.fromkeys()方法构造一个字典,每个unicode和音符作为键,对应的值全部为None, 然后使用unicodedata.normalize()将原始输入标准化为分解形式字符 sys.maxunicode:给出最大Unicode代码的值的整数,即1114111(十六进制的0x10FFFF). unocodedata.combining:将分配给字符chr的规范组合类作为整数返回,如果未定义组合类,则返回0. ''' cmb_chrs = dict.fromkeys(c for c in range(sys.maxunicode) if unicodedata.combining(chr(c))) b = unicodedata.normalize('NFD',s7) #调用chraslate函数删除所有重音符 print(b.translate(cmb_chrs)) #方法2: print(unicodedata.normalize('NFKD',s7).encode('ascii','ignore').decode())

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多