python字符串操作

基础

  1. 获取字符串长度: len(str)
  2. 子串str1在字符串str中出现的次数: str.count(str1)
  3. 字串str1在字符串str中第一次出现的索引: str.index(str1)

判断类型

判断字符串中字符的类型

str = 'Hello World'
print(str.isspace())    # False   str中值包含空格
print(str.isalnum())    # False   str中所有字符都是字母/数字
print(str.isalpha())    # False   str中所有字符都是字母
print(str.isdecimal())  # False   str中所有字符都是数字
print(str.istitle())    # True    str中每个单词首字母大写(标题化)
print(str.islower())    # False   str中所有字符都是小写
print(str.isupper())    # False   str中所有字符都是大写

查找和替换

str = 'Hello World'
print(str.startswith('Hello'))      		# True 	str以指定子串开头(区分大小写)
print(str.endswith('world'))       		# False str以指定子串结尾(区分大小写)
print(str.find('llo', 0, 5))        		# 2 	str在指定范围0~5内查询子串,若存在返回子串索引,不存在则返回-1
print(str.rfind('l', 0, 5))         		# 	类似于find(),只是从右边开始查找
print(str.index('llo', 0, len(str)))   	        # 2 	str在指定范围内查询子串,若存在返回子串索引,不存在则报错
print(str.rindex('llo', 0, len(str)))  	        # 2  	类似于find(),只是从右边开始查找
print(str.replace('llo', 'oll', str1.count('llo')))     # 'Heoll World' str中new_str替换old_str, 替换次数 <= 指定次数
print(str.replace('lla', 'ool', 2))             # 'Hello World' 当str中不存在old_str时,返回str本身

大小写替换

str = 'Hello World'
print(str.lower())   	# 'hello world'  将str中所有字符小写
print(str.upper())   	# 'HELLO WORLD'  将str中所有字符大写
print(str.title())   	# 'Hello World'  将str中每个单词首字母大写(标题化)
print(str.capitalize()) # 'Hello world'  将字符串首字母大写,其他全部小写
print(str.swapcase())   # 'hELLO wORLD'  翻转str中的大小写

去除空白字符

str = '
abc	'
print(str.strip())   # 'abc'    去除str两边的空白字符
print(str.lstrip())  # 'abc	'  去除str左边的空白字符
print(str.rstrip())  # '
abc'  去除str右边的空白字符

拆分

str = '
a	b c	'
print(str.split())   	# ['a', 'b', 'c']   按空白字符切分字符串为列表
print(str.split(' '))  	# ['
a	b', 'c	'] 按空格切分字符串为列表

字符拼接

  1. "+"

  2. .join() 将列表转化为字符串

str = ['hello', 'world', 'everyone']
print('*'.join(str))   # hello*world*everyone
print(''.join(str))    # helloworldeveryone

  1. .format() 字符串中{}数量和format()参数个数必须一致
str = '{} {}!'.format('hello', 'world') 	# hello world!

  1. %
str = '%s, %s!' % ('hello', 'world')		  # hello,world!

  1. string.Template()
    首先通过Template初始化一个字符串。这些字符串中包含了一个个key。
    通过调用substitute或safe_subsititute,将key值与方法中传递过来的参数对应上,从而实现在指定的位置导入字符串。
    这种方式的好处是不需要担心参数不一致引发异常
from string import Template
str = Template('${s1} ${s2} ${s3}!')
print(str4.safe_substitute(s1='hello', s2='world'))  # hello world ${s3}!

  1. F-strings
s1 = 'hello'
s2 = 'world'
print(f'{s1} {s2}!')   # hello world!

切片

使用索引值来限定范围,从一个大的字符串切出小的字符串.
适用于字符串、列表、元祖,不支持字典
str[start: end: step]

  • 默认start=0, end=len(str), step=1
  • 第一个字符索引=0 or -len(str); 第二个字符索引=-1 or len(str)
  • step的正负决定切片的方向: 负数(逆序)、正数(顺序)
    本质:调用魔法函数__getitem__()
str = '0123456789'
print(str[0:3])     		# 012
print(str[:3])      		# 012         索引:0 ~ (3-1)
print(str[3:])      		# 3456789     索引:3 ~ 最后
print(str[3::2])    		# 3579
print(str[::2])     		# 02468
print(str[0:len(str)])          # 0123456789  索引: 0 ~ len(str)-1
print(str[-1])     	        # 9           索引: 最大
print(str[0:-1])   		# 012345678   索引: 0 ~ (最大-1)
print(str[::-1])   		# 9876543210  从0 ~ 最后 逆序切
print(str[:5])     		# 01234       索引:0 ~ 5
print(str[-5:])    		# 56789       索引: -5 ~ -1
print(str[-1:0:-1])  		# 987654321
print(str[-1:-len(str):-1])     # 987654321

string

import string

# 获取大小写字母集
print(string.ascii_letters)	# abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

# 获取小写字母集
print(string.ascii_lowercase)	# abcdefghijklmnopqrstuvwxyz

# 获取大写字母集
print(string.ascii_uppercase)	# ABCDEFGHIJKLMNOPQRSTUVWXYZ

# 获取数字
print(string.digits)		# 0123456789

# 获取大小写字母和特殊字符集
print(string.printable)	        # 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[]^_`{|}~

# 获取特殊字符
print(string.punctuation)	# !"#$%&'()*+,-./:;<=>?@[]^_`{|}~

# 获取16进制字符
print(string.hexdigits) 	# 0123456789abcdefABCDEF
原文地址:https://www.cnblogs.com/ericness/p/12656213.html