7-python基础学习-数据结构-str字符串的常用操作(空字符判断,大小写转换,拆分,字符内容查询,分割、截取,替换,字符串频繁拼接高效处理)

修订日期 内容
2021-2-9 初稿
2021-2-16 补充字符串频繁拼接操作

python中字符串的常见操作

去空格以及空字符判断

去空格

str1 = ' hello    world '
print(str1.strip()) # 左右空格去掉了hello    world

print(str1.replace(' ','')) # 去掉了全部空格->helloworld

空字符串判断


# 判断空字符方式一
str2 = '   '
if str2 is not None and str2.strip() == '':
	print('空字符串')

# 判断空字符串方式二(推荐)
if str2 is not None and len(str2.strip()) == 0:
	print('空字符串')

查询索引

API

方法 说明
index(s) 查找第一个子串出现的索引,不存在抛出异常
rindex(s) 查找第一个子串出现的索引,不存在抛出异常
find(s) 查找第一个子串出现的索引,不存在返回-1
rfind(s) 查找最后一个子串出现的索引,不存在返回-1

代码示例

s = 'python and java'
print(s.index('a'))  # 第一个位置
print(s.rindex('a')) # 最后一个位置
print(s.find('M')) # -1 第一个位置 不存在则返回-1
print(s.find('M')) # -1 最后一个位置 不存在则返回-1
# print(s.index('M'))  # 不存在则抛出异常

大小写转换

API

方法 说明
upper() 全部转大写
lower() 全部转小写
swapcase() 小写转大写,大写转小写
capitalize() 第一个字符转大写,剩余转小写
title() 每个单词的首字母大写,其他转小写

代码示例

s = 'Python and Java'
print(s.upper())  # PYTHON AND JAVA
print(s.lower())  # python and java
print(s.swapcase())  # pYTHON AND jAVA

# 第一个字符转大写,剩余转小写
print('pYTHON AND jAVA'.capitalize())  # Python and java

# 每个单词的首字母大写,其他转小写 
print('pYTHON AND jAVA'.title())  # Python And Java

填充字符(左、右、居中)

API

方法 描述
center(len,s) 居中对齐,不足填两边
ljust(len,s) 左边对齐,不足填右边
rjust(len,s) 右对齐,不足填左边
zfill(len) 前面用0补齐

代码示例

s = 'python'
print(s.center(11,'*'))  # ***python**
print(s.ljust(11,'*'))  # python*****
print(s.rjust(11,'*'))  # *****python

print(s.zfill(10))  # 0000python

拆分、分割、截取字符串

API

方法 描述
split() 指定拆分的字符串,默认分割空字符串,返回一个新的列表list
rsplit 从右边(后到前)开始拆分,可以指定拆分多少个指定的字符,不指定时与split()功能相同
[start:end] 截取字符串从start索引到end索引(不包含,索引从0开始)的字符串,可以指定步长

代码示例

s = 'python,java,2020'
print(s.split(','))  # ['python', 'java', '2020']
print(s.split(',',1))  # ['python', 'java,2020']
print(s.rsplit(',',1))  # ['python,java', '2020']

#截取字符串
print('Python'[0:3])  # Pyt
print('Python'[::2])  # Pto

字符串内容判断

API

方法 描述
isidentifier() 判断是否合法的标示符,字母,下划线,数字的组合,(空格也不行哦)
isalpha() 判断是否全部由字母组成
isalnum() 判断是否(全是字母,全是数字,字母数字的组合)组成的字符串
isdecimal() 判断是否十进制的数字组成
isdigit() 判断整数

代码示例

# 判断是否合法字符
s = 'python,java,2020'
print(s.isidentifier())  # False

print('Hello_world 2020'.isidentifier())  # False
print('Hello_world2020'.isidentifier())  # True

# 判断是否全部由字母组成
print('Python'.isalpha())  # True
print('Python2021'.isalpha())  # False

# 判断是否全由字母和数字组成
print('Python2021'.isalnum(),'Python'.isalnum(), '2021'.isalnum())  # True True True

# 判断是否全由十进制数字组成
print("20210209".isdecimal(),"0o001".isdecimal())  # True False
# 判断是否整数组成
print("1000.00".isdigit(),"1000".isdigit())  # False True

字符串替换,列表元组转字符串

API

方法 描述
replace() 参数1:原字符串 ,参数2:新字符串,参数3:最大替换次数
join() 将纯字符串的列表list、元组tuple组合成一个新字符串

代码示例

l1 = ['python', 'java', '2021']
print(''.join(l1))  # pythonjava2021

l2 = ['python', 'java', 2021]
# print(''.join(l2))  # 抛出异常,2021不是字串串

t1 = ('python', 'java', '2021')
t2 = ('python', 'java', 2021)
print(','.join(t1))  # python,java,2021
# print(''.join(l2))  # 抛出异常,2021不是字串串

数字与字母(字符)与ASCII的转换

代码示例

print(ord('A'), ord('a')) # 65 97
print(chr(65), chr(97))  # A a

字符串的比较

常用==is比较
两则的区别是,== (类似与java中的equals)比较的是值,
is (类似与java中的==)比较的内存地址

代码示例

print('hello' == 'hello')  # True
print('hello' != 'hello world')  # True
print('hello' is 'hello')  # True

字符串中的占位符

待补充

字符串的编码与解码

encode 编码
decode 解码

代码示例

# 字符串的编码与解码
s = '我爱学习'
b = s.encode('GBK')
print(type(b), b)  # <class 'bytes'> b'\xce\xd2\xb0\xae\xd1\xa7\xcf\xb0'
print(s.encode('UTF8'))  # b'\xe6\x88\x91\xe7\x88\xb1\xe5\xad\xa6\xe4\xb9\xa0'
print(b.decode('GBK'))  # 我爱学习

字符串频繁拼接操作

在java与python中都可以使用+=来拼接字符串,但是涉及频繁拼接时效率较低,在java中有提供StringBuffer/StringBuilder来操作,在python中如何操作呢?可以使用列表append然后再次将列表还原成字符串

代码例子

file_name = 'longtext.txt'
buff_size = 10
read_data = []
with open(file_name,encoding='utf-8') as rf:
    while True:
        data = rf.read(buff_size)
        read_data.append(data)
        if not data:
            break

print(''.join(read_data))

Guess you like

Origin blog.csdn.net/weixin_48470176/article/details/113763467