首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 字符串处理

背景:基于正则表达式的项目应用。

1.Python字符串之删除空白字符或某些特定字符、字符串

说明:strip()、rstrip()、lstrip()分别用来删除两端、右端、左端连续的空白字符或字符集。

strip()演示:

s = ‘abc ’

s2 = s.strip()

print(s2)

#abc

s = ‘ hello world ’

s2 = s.strip()

print(s2)

#hello world

s = ‘aaaassddf’

s2 = s.strip(‘a’)

print(s2)

#ssddf

s3 = s.strip(‘af’)

print(s3)

#ssdd

s = ‘aabbccddeeffg’

s2 = s.strip(‘af’)

print(s2)

#bbccddeeffg #字符f不在字符串两侧,所以不能删除

s3 = s.strip(‘aefg’)

print(s3)

#bbccdd

rstrip()演示:

s = ‘aaaaddfaaa’

s2 = s.rstrip(‘a’)

print(s2)

#aaaaddf

lstrip()演示:

s = ‘aaaaddfaaa’

s2 = s.lstrip(‘a’)

print(s2)

#ddfaaa

2.删除单个固定位置字符:切片+拼接

s = ‘abc:123’

s1 = s[:3] +s[4:]

print(s1)

#abc123

3.删除任意位置字符同时删除多种不同字符:replace(),re.sub()

s = ‘abc\t123\txyz’

print(s.replace(‘\t’,’ ’))

#abc 123 xyz

s = ‘abc\n123\txyz\r’

print(re.sub(‘[\r\n\t]’,’ ‘ ’,s))

#abc 123 xyz

4.同时删除多种不同的字符:translate()

translate()方法根据参数table给出的表(包含256个字符)转换字符串的字符,要过滤掉的字符放到deletechars参数中。

translate()方法语法:

str.translate(table)

bytes.translate(table,delete)

bytearray.translate(table,delete)

str.translate(table)方法:

Ⅰ.映射关系建立:maketrans()

intab = ‘aeiou’

outtab = ‘12345’

trantab =str.maketrans(intab,outtab)

print(str.maketrans(‘aeiou’,’12345’))

#

Ⅱ.将其转换成字符串:

str = ‘this isstring example….wow!’

print(str.translate(trantab)+ ‘\n’)

#th3s 3s str3ng 2x1mpl2....w4w!

bytes.translate(table,delete)方法:

bytes_test =bytes.maketrans(b’run’,b’RUN’)

bytes_p = b’ruoon’

print(bytes_p.translate(bytes_test,b’o’))

#b’RUN’

5.Python字符串前加u,r,b的含义?

u:表示Unicode字符串,万国码。

r:表示非转义字符,原始字符串。

b:bytes,以字节为单位的数据类型。

说明:

①python3中默认的str是(python 2里面的) Unicode,bytes是(python 2)的str,b‘’前缀代表的就是bytes

②在python 3以后,字符串和bytes类型就彻底分开了。字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。

str与bytes之间的类型转换如下:

str to bytes:bytes(s,encoding = ‘utf-8’)

bytes to str:str(b,encoding = ‘utf-8’)

字符的概念?

字符是指计算机中所使用的字母、数字、字符号。在不同的编码中,每个字符所需要的存储空间是不同的。ASCii码中,一个英文字符需要1Bytes;GB 2312编码或GBK编码中,一个汉字字符存储需要2Bytes;UTF-8编码中,一个英文需要1Bytes,一个汉字字符需要3-4Bytes;UTF-16中,一个英文或汉字都需要2Bytes。特别的,在UTF-32编码中,任何字符存储都需要4个字节。

正则动手:从某网站表格直接拷贝数据如下,请自如的进行剪切。

拷贝数据

分析代码格式:数字 + 学校名 + 实数 + 星级 + 整数

基础正则形式:(\d+)+\s+([\u4E00-\u9FA5])+\s+(\d+(\.\d)?)+\s+(\d+★)+\s+(\d)

所以现在想要几项直接在此基础上更改即可。

原始代码

打印结果

整体感觉而言,正则对于处理格式规范的字符串或文字是十分友好的,嗯..话说如果文件输出是我们自己定义的话,那格式规范就不存在问题了。当然,对于格式不那么规范的字符串,正则也还是有办法处理的。

这算是我强迫自己写的第一个简单的正则表达式把,不一定具有什么意义或是值得学习的地方,但至少对于一般的字符串的处理或是查找应该没有什么太大的问题了。正则的掌握率差不多在40%左右吧,其余带括号的那些...用得着时再说。

老规矩,咱们吸喵一只!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180826G02RH300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券