参考链接: 如何在Python中索引和切片字符串string
Python字符串
本章将介绍:1.字符串的3种表现形式2.字符串的输入与输出,索引与切片。3.字符串常用函数4.了解字符串的运算
在汉语中,将若干个字连起来就是一个字符串,例如“千锋教育”就是一个由4个汉字组成的字符串。在程序中,字符串是由若干字符组成的序列
字符串的概念
•在前面的章节中,大家已接触过简单字符串,Python中的字符串以引号包含为标识,具体有3种表现形式:
•1. 使用单引号标识字符串
•使用单引号标识的字符串中不能包含单引号,具体如下所示:
'das' '你好' '123456'
•2. 使用双引号标识字符串
•使用双引号标识的字符串中不能包含双引号,具体如下所示:
"sadsa" "你好" "123456"
•3. 使用三引号标识字符串
•使用3对单引号或3对双引号标识字符串可以包含多行,具体如下所示:
'''
asda
'''
"""
你好
"""
Python转义字符
在需要在字符中使用特殊字符时,python用反斜杠()转义字符。如下表:
下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
操作符描述实例+字符串连接>>>a + b'HelloPython'*重复输出字符串>>>a * 2'HelloHello'[]通过索引获取字符串中字符>>>a[1]'e'[ : ]截取字符串中的一部分>>>a[1:4]'ell'in成员运算符 - 如果字符串中包含给定的字符返回 True>>>"H" in aTruenot in成员运算符 - 如果字符串中不包含给定的字符返回 True>>>"M" not in aTruer/R原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。>>>print r'n'n>>> print R'n'n
字符串的输入与输出
字符串的输出可以使用print()函数:
# 字符串的输出
print("我是Neal")
上面的字符串只能够输入特定的内容,如果事先不知道要输出的内容,而是需要根据用户输入信息来确定,可以采用如下两种方法:
# 方法一
name = input("请输入您的姓名")
print("您的姓名是:%s" %name)
# 方法二
name = input("请输入您的姓名")
print(f"您的姓名是:{name}")
显然第二种方法更为简洁明了,并且在第一种方法中需要根据不同的类型变量而改变%后面的字母,下表是不同字母代表的含义:
一、索引
1、索引下标查找
a = 'ABCDPOM'
s = a[0]
s2 = a[2]
print(s)
print(s2)
输出结果为:A C
二、切片截取
切片 slice从字符串序列中取出相应的元素重新组成一个字符串序列语法s[(开始索引b):(结束索引e)(:(步长s))]注 : 小括号()括起来的部分可以省略(包含开始索引位置,不包含结束索引位置)说明:
1.开始索引是切片切下的位置,0代表第一个元素,1代表第二个元素, -1 代表最后一个元素
2. 结束索引是切片的终止索引(但不包含终止点)
3. 步长是切片每次获取完当前元素后移动的方向和偏移量
3.1 没有步长,相当于步长为1,(默认为1)
3.2 当步长为正整数时,取正向切片,开始索引默认为0,结束索引为最后一个元素的下一个位置
3.3 当步长为负数时,取反向切片, 反向切片时,默认的其实位置为最后一个元素,终止位置为第一个元素的前一个位置
示例:s = ‘abcde’
>>>s[0:4] # 'abcd' 1代表起始索引,4代表到此位置不取,直接结束
>>>s[:4] # 'abcd'
>>>s[2:5] # 'cde' 切片索引可以越界
>>>s[2:] # 'cde'
>>>s[0:] # 'abcde'
>>>s[:] # 'abcde'
>>>s[1:1] # ''
>>>s[4:1] # ''
>>>s[1:5] # 'bcde'
>>>s[1:5:1] # 'bcde'
>>>s[1:5:2] # 'bd'
>>>s[::2] # 'ace'
>>>s[4:0:-1] # 'edcb' 反向切片包含起始,不包含末尾
>>>s[::-1] # 'edcba' 逆序
>>>s[-1::-1] # 'edcba'
>>>s[4::-2] # 'eca'
>>>s[-4:-2] #'bc'
>>>s[-2:] #'de'
字符串常用函数
1.字符串常量集合
print(string.ascii_uppercase) #大写字母
print(string.ascii_lowercase) #小写字母
print(string.ascii_letters) #大小写字母
print(string.digits) #数字
print(string.punctuation) #符号集合
print(string.printable) #可输入字符合集,包括大小写字母数字和符号的合集
2.字符串大小写转换 5个
str='hello,woRld!'
print(str.capitalize()) #仅首字母大写,Hello,world!
print(str.title()) #仅每个单词首字母大写,Hello,World!
print(str.upper()) #每个字母都大写,HELLO,WORLD!
print(str.lower()) #每个字母都小写,hello,world!
print(str.swapcase()) #大小写互换,HELLO,WOrLD!
3.字符串内容判断 10个
num='123'
alp='asd'
num_alp='a1s2d'
printable='`~!@#$%'
print(num.isdigit()) #字符串中的字符是否都是数字,True
print(alp.isalpha()) #字符串中的字符是否都是字母,True
print(num_alp.isalnum()) #字符串中的字符是否都是字母和数字,True
print(printable.isprintable()) #字符串中的字符是否都是可输入字符,True
print(num.isnumeric()) #字符串中的字符是否都是数字,True
print(alp.islower()) #字符串中的字符是否都是小写字母,True
print(num_alp.isupper()) #字符串中的字符是否都是大写字母,False
print(alp.istitle()) #字符串中的字符是形如标题Hello World,False
print(' '.isspace()) #字符串中的字符是否都是空格,True
print('哈'.isascii()) #字符串中的字符是否可用ascll码表示,汉字是Unicode编码表示的所以是False
4.字符串填充
str='Welcome'
print(str.center(13,'*'))#***Welcome***
print(str.ljust(10,'+')) #Welcome+++
print(str.rjust(10,'-')) #---Welcome
print(str.zfill(10)) #000Welcome
print('-100'.zfill(10)) #-000000100
print('+100'.zfill(10)) #+000000100
5.字符串搜索
str='awasdhiwhhihuasd~hjdsasdihfi'
print(str.index('asd')) #str中有子字符串时回返回收自费所在索引值,若不存在则报错
try:
print(str.index('aes'))
except ValueError as v:
print(v)
print(str.find('asd')) #str中有子字符串时会返回首字母所在索引值,若不存在则返回-1
print(str.find('aes'))
print(str.count('asd')) #返回字符串中包含的子串个数
print(str.count('aes')) #不存在则返回0
6.字符串替换
str='hello,world!'
print(str.replace('world','python')) #生成替换字符的复制,hello,python!原字符串str未改变
print(str) #hello,world!
str='awasdhiwhhihuasd~hjdsasdihfi'
print(str.replace('asd','ASD',2)) #awASDhiwhhihuASD~hjdsasdihfi
7.字符串添加
#join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
#用法:str.join(sequence),sequence包括字符串、列表、元祖、集合及字典(字典仅连接key),其中列表、元祖和集合的元素都必须是字符串,否则会报错
lis=['I','am','IronMan!']
print(' '.join(lis)) #I am IronMan!
print('*'.join({'1','2'}))
print('-'.join('ABCD'))
print('+'.join(('a','b','c')))
print('~'.join({'a':1,'b':2
小案例
•在注册网站时,用户经常需要设置密码,然后程序根据用户输入的密码判断安全级别,具体如下所示:
•低级密码——包含单纯的数字或字母,长度小于等于8。
•中级密码——必须包含数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|)中任意两种,长度大于8。
•高级密码——必须包含数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|)中的3种,长度大于16。
接下来按照上述要求编写程序,如例所示
本章小结
本章主要介绍了Python中的字符串,首先讲解了字符串有3种表示方法及字符串中的转义字符,接着讲解了字符串的输入与输出以便程序更好地交互,又讲解了字符串的索引与切片,最后讲解了字符串的运算及常用函数。通过本章的学习,应熟练使用字符串的切片及常用函数