python:字符串的定义和常用操作
什么是字符串
字符串也是一种数据容器,它是字符的容器,一个字符串可以存放任意数量的字符。
在Python中,字符串是一个不可变的Unicode字符序列。每个字符根据UNICODE标准都有一个唯一的数值。然而,即使所有字符都是数字,整个序列本身也没有数值。为了将字符串与数字和其他标识符区分开来,字符序列在其字面表示中被包含在单引号、双引号或三引号内。因此,1234是一个数字(整数),而’1234’是一个字符串。
字符串的特点
字符串的创建
字符串可以用单引号、双引号、三引号进行创建。例如,下面三种方式是等价的:
str1 = 'hello world'
str2 = "hello world"
str3 = """hello world"""
print(str1)
print(str2)
print(str3)
运行结果:
字符串的下标索引
说明
和列表、元组等其它容器一样,字符串也可以通过下标进行访问:
示例
通过正向索引取、通过反向索引取
my_string = 'hello python'
# 通过正向索引取
value = my_string[1]
print(value)
# 通过反向索引取
value2 = my_string[-6]
print(value2)
运行结果:
字符串是否无法修改的
说明
同元组一样,字符串是一个不可修改的数据容器。所以,下面的操作是无法完成的:
示例
示例:修改索引下标处的字符报错
my_string = 'hello python'
my_string[1] = 'E'
运行结果:
字符串的index()方法
语法说明
字符串.index(字符串, beg=0, end=len(string))
用于返回输入字符串中子字符串首次出现的位置索引,需要查找的子字符串作为必需参数。
有两个可选参数,分别是起始和结束索引,它们指定查找子字符串的范围。如果未指定这两个参数,则index()函数从0索引到字符串末尾进行工作。如果输入字符串中没有找到子字符串,它会抛出一个ValueError。
返回值:如果找到子字符串则返回索引,否则会引发ValueError。
示例
my_string = 'hello python and java'
index = my_string.index('and')
print(f'and 在字符串{my_string}中的起始索引下标为:{index}')
运行结果:
replace()方法:字符串的替换操作
功能和语法
Python字符串的replace()方法将字符串中所有出现的某个子字符串替换为另一个子字符串。这个方法用于通过替换原始字符串中的一些部分来创建一个新的字符串,它并没有修改原始字符串本身。
例如,在实时应用中,这个方法可以用来一次性替换文档中多个相同的拼写错误。
这个replace()方法还可以选择替换字符串中指定数量的子字符串出现次数,而不是全部替换。
语法形式:
str.replace(old, new[, count])
参数说明:
返回值:
返回一个字符串副本,其中所有出现的旧子字符串都被新的子字符串替换。如果给出了可选参数count,则只替换前count次出现的子字符串。
示例
my_string = 'hello python and java and html'
new_str = my_string.replace('and', '和')
print(f'替换后得到的新字符串为:{new_str}')
print(f'老的字符串的内容为:{my_string}')
运行结果:
split()方法:分隔字符串
功能和语法
str.split(sep=None, maxsplit=- 1)
使用sep
作为分隔符字,将字符串分隔为多个字符串,返回结果保存到一个列表中。注意:字符串本身不变。如果指定了maxsplit
,则最多进行maxsplit
次分割(因此,列表将最多有maxsplit+1
个元素)。如果未指定maxsplit
或其值为-1
,则没有对分割次数的限制(可以进行所有可能的分割)。
如果指定了sep
,连续的分隔符不会组合在一起,而是被视为界定空字符串(例如,'1,,2'.split(',')
返回 ['1', '', '2'])
。sep
参数可以由多个字符组成(例如,'1<>2<>3'.split('<>')
返回 ['1', '2', '3']
)。用指定的分隔符分割一个空字符串将返回 ['']
。
如果没有指定sep
或sep
为None
,则会应用不同的分割算法:连续的空白字符被视为一个分隔符,如果字符串有前导或尾随的空白字符,结果将不包含开头或结尾的空字符串。因此,用None
作为分隔符分割一个空字符串或仅由空白字符组成的字符串将返回[]
。
示例
示例1
my_str = '1,2,3'
my_list = my_str.split(',')
print(my_list)
运行结果:
示例2
my_str = '1,2,3'
my_list = my_str.split(',', maxsplit=1)
print(my_list)
运行结果:
示例3
my_str = '1,2,3,'
my_list = my_str.split(',')
print(my_list)
运行结果:
示例4
my_str = '1,,3,'
my_list = my_str.split(',')
print(my_list)
运行结果:
示例5
my_str = '1<>2<>3,'
my_list = my_str.split('<>')
print(my_list)
运行结果:
示例6
my_str = '1 2 3,'
my_list = my_str.split()
print(my_list)
运行结果:
示例7
my_str = '1 2 3,'
my_list = my_str.split(maxsplit=1)
print(my_list)
运行结果:
示例8
my_str = ' 1 2 3 '
my_list = my_str.split()
print(my_list)
运行结果:
示例9
my_str = ' 1 2 3 '
my_list = my_str.split(' ')
print(my_list)
运行结果:
示例10
my_str = ''
my_list = my_str.split()
print(my_list)
运行结果:
示例11
my_str = ' '
my_list = my_str.split()
print(my_list)
运行结果:
示例12
my_str = ' '
my_list = my_str.split(sep=None)
print(my_list)
运行结果:
示例13
my_str = ''
my_list = my_str.split(sep='a')
print(my_list)
运行结果:
示例14
my_str = ' '
my_list = my_str.split(sep='a')
print(my_list)
运行结果:
示例15
my_str = ' '
my_list = my_str.split(sep=' ')
print(my_list)
运行结果:
示例16
my_str = 'hello world'
my_list = my_str.split()
print(f'返回的分隔后的字符串为:{my_list}')
print(f'原始字符串的内容为:{my_str}')
运行结果:
strip([chars])方法:去除字符串前后指定的字符
语法和功能
str.strip([chars])
返回一个字符串副本,其中删除了开头和结尾的字符。chars
参数是一个字符串,指定要移除的一系列字符。如果省略或为None
,chars
参数默认删除空白字符。chars
参数不是一个前缀或后缀;相反,它的所有组合值都会被去除。
注意:原始字符串本身没有改变。
注意:例如,如果传入的是’12’,那么 ‘1’ 和 ‘2’ 都会移除,是按照单个字符。
从字符串中去除最外层的开头和结尾中包含的chars
中指定的字符。从开头端开始删除字符,直到遇到一个不在chars
中的指定的字符为止。在尾部进行类似的操作。
示例
示例1
my_str = ' hello '
returned_str = my_str.strip()
print(f'处理后返回的字符串为:{returned_str}')
print(f'原始字符串为:{my_str}')
运行结果:
示例2
my_str = 'www.example.com'
returned_str = my_str.strip('cmow.')
print(returned_str)
运行结果:
示例3
my_str = '#....... Section 3.2.1 Issue #32 .......'
returned_str = my_str.strip('.#! ')
print(returned_str)
运行结果:
示例4
my_str = ' hello world '
returned_str = my_str.strip(None)
print(returned_str)
运行结果:
count(sub[, start[, end]])方法:统计某个子串在字符串中出现的次数
语法和功能
str.count(sub[, start[, end]])
返回子字符串sub
在范围[start, end]
内非重叠出现的次数。可选参数start
和end
按照切片表示法进行解释。如果sub
为空,返回字符之间空字符串的数量,即字符串长度加一。
示例
示例1
my_str = 'hello world and good hello python '
count = my_str.count('o')
print(f'o在字符串中出现的次数:{count}')
运行结果:
示例2
my_str = 'hello world and good hello python '
count = my_str.count('oo')
print(f'oo在字符串中出现的次数:{count}')
运行结果:
示例3
my_str = 'hello'
count = my_str.count('')
print(count)
运行结果:
示例4
my_str = 'hello'
count = my_str.count(' ')
print(count)
运行结果:
len()函数:统计字符串的长度
my_str = 'hello'
len_of_str = len(my_str)
print(len_of_str)
运行结果:
用while循环对字符串遍历
my_str = 'hello'
index = 0
while index < len(my_str):
print(my_str[index])
index += 1
运行结果:
用for循环对字符串遍历
my_str = 'hello'
for ch in my_str:
print(ch)
运行结果:
作者:听海边涛声