07-Python-字符串操作
Python中的字符串用单引号 ' 或双引号 " 括起来,并且字符串不能被修改。字符串的常用操作如下
1、字符串的截取
语法:变量[头索引:尾索引] (索引值以 0 为开始值,-1 为从末尾的开始位置) 例如: str1 = Druid print(str1[0]) #输出D(第一个字符) print(str1[-1]) #输出d(倒数第一个字符) print(str1[:1]) #输出D(第一个字符) print(str1[0:-1]) #输出Drui (第一至倒数第二个字符) print(str1[1:4]) #输出rui(第二个至第四个字符) print(str1[1:10]) #输出ruid(长度超过字符串自身长度,显示第二个至最后一个字符)
2、字符串复制连接
“+”表示连接字符串,“*”表示复制字符串 str1 = Druid print(str1 + "python") #输出Druidpython print(str1 * 3) #输出DruidDruidDruid(复制3次)
3、转义字符
Python 使用反斜杠 “\ ”转义特殊字符,如果不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串。 print("Dr\nuid") #输出Dr uid print(r"Dr\nuid") #输出Dr\nuid
4、格式化方法
#使用% 'Hello, %s' % 'world' #'Hello, world' 'Hi, %s, you have $%d.' % ('Michael', 1000000) #'Hi, Michael, you have $1000000.' #格式化整数和浮点数还可以指定是否补0和整数与小数的位数: '%2d-%02d' % (3, 1) #' 3-01',第一个2的意思为两位,0的意思为用数字0占一位,第二个2的意思为两位 '%.2f' % 3.1415926 #'3.14',取小数点后两位 #有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%: 'growth rate: %d %%' % 7 #'growth rate: 7 %' #format方法 msg = "my name is {}, and age is {}" msg.format("alex",22) #'my name is alex, and age is 22' msg = "my name is {1}, and age is {0}" msg.format("alex",22) #'my name is 22, and age is alex' msg = "my name is {name}, and age is {age}" msg.format(age=22,name="alex") #'my name is alex, and age is 22' _username = input("请输入你的用户名:") _age = input("请输入你的年龄:") print("你好:{name},你的年龄:{age}".format(name=_username,age=_age)) #format_map msg = "my name is {name}, and age is {age}" msg.format_map({'name':'alex','age':22}) #'my name is alex, and age is 22' #f-string name = "Druid" print(f"hello {name}") #hello Druid
5、其他常用方法
name = 'my NAme Is Druid' print(name.capitalize()) # 首字母大写,其他均变成小写 print(name.count('d')) print(name.center(50, '-')) # 一共打印五十个字符,字符串置中,不够的位用-填充 print(name.ljust(50, '*')) # 一共打印五十个字符,字符串置左,不够的位用*填充 print(name.rjust(50, '~')) # 一共打印五十个字符,字符串置右,不够的位用~填充 print(name.endswith('d')) # 是否以字符串'd'结尾 print(name.expandtabs(tabsize=30)) # tab键为30个空格 print(name.find('d')) # 返回字符的第一个索引,没有找到返回-1 print(name[name.find('d'):]) # 切片 print('druid'.rfind('d')) # 返回最后一个字符的索引 print(name.index('d')) # 返回索引,没有找到则报错 print(name[name.index('d'):]) # 切片 s = 'a123A' print(s.isalnum()) # 是否是字母数字 print(s.isalpha()) # 是否是纯英文字符 print(s.isdecimal()) # 是否是十进制 print(s.isdigit()) # 是否是整数 print(s.isidentifier()) # 是否是合法的标识符(变量名) print(s.islower()) # 是否是小写 print(s.isnumeric()) # 是否仅有数字 print(s.istitle()) # 每个单词开头是否为大写 print(s.isupper()) # 是否为大写 print("".join(('druid!'))) # 把可迭代对象用""中的字符串连接起来 print('+'.join(['a', 'b', 'c'])) print('DruiD'.lower()) # 小写 print('druid'.upper()) # 大写 print('\n druid'.lstrip()) # 去掉左边空格和换行符 print('druid \n'.rstrip()) # 去掉右边空格和换行符 print('\n druid \n'.strip()) # 去掉两边的空格和换行符 p = str.maketrans('abcde', '12345') # 前面的字符串用后面的字符串替换 print('abcde'.translate(p)) # 如果前面的字符串和p中的字符串有相同的字符,则替换 print('druid abcde'.translate(p)) # 前面的字符串和p中的字符串不相同的字符不替换 print('druid'.replace('d', 'D', 1)) # 将第一个字符替换,如果不加1,则替换所有 print('druid chenc'.split()) # 默认按照空格分隔字符,得到的结果为列表 print('druid chenc'.split('d')) # 以d为分隔符 print('druid chenc'.split('c')) # 以c为分隔符 print('1+2+3'.split('+')) # 以+为分隔符 print('1+2\n+3+4'.splitlines()) # 按换行符分隔 print('druid chen'.zfill(50)) # 左边用零填充