数据类型拓展之字符串类型

一、类型转换:str可以把任意其他类型都转化为字符串

print(str({'a': 1, 'b': 2}))  # 结果为 {'a': 1, 'b': 2} ,类型为str

二、内置功能:

  前言:因为字符串为不可变类型,所以对字符串进行的所有操作,若有值产生,一定是产生新值,对原字符串没有影响。

  1、按索引取值:理同列表,可正向取,亦可反向取。

a = 'qwer'
print(a[2])  # 按索引取字符串第三个字符,结果为 e
print(a[-1])  # 按索引取字符串最后一个字符,结果为 r

  2、切片:索引的拓展功能,从一个大字符串中拷贝出一个子字符串。

    ①基本用法:

x = 'abcdefg'
print(x[1:5])  # 限头限尾,取字符串的1号索引到4号索引,即结果为 bcde,尾号索引可以超过字符串长度,超过则都作为最长处理,即此处最长为7号索引,即分号右边输入大于等于8的值都视为8
print(x[:])  # 分号左右两边可以留空,分别表示头号索引为0和尾巴索引为最长,可只一遍留空,也可都留空,都留空,相当于完全拷贝了原字符串,即结果为 abcdefg

    ②步长与反向步长:

x = 'abcdefghijk'
print(x[1:10:3])  # 1号索引开始,每次加3,到9号索引为止取的值组成子字符串,即结果为 beh
print(x[-2:0:-2])  # 从倒数第二号索引开始,每次加2,到1号索引为止取的值组成子字符串,即结果为 jhfdb
print(x[::-1])  # 反向步长的拓展使用,可以得到字符串倒过来的新字符串,即结果为 kjihgfedcba

  3、长度功能len:

a = 'abc d'  # 空格也为字符,即结果为 5
print(len(a))  # 通过len得到字符串a长度为5,即结果为 5

  4、成员运算符in和not in:判断一个小字符串是否在大字符串中。

print('ab' in 'ab c def')  # 结果为 True
print('ab c' not in 'ab c def')  # 结果为False

  5、移除字符串左右两侧符号strip:

a = '    abc       '
print(a.strip())  # 若strip不加具体内容,则默认移除空格,即结果为 abc
b = '****a**b**c*******'
print(b.strip('*'))  # strip分别从字符串最左边和右边开始检索,遇到需要清除会一直检索,直到遇到不需要清除的则马上停止,即剩余中间部分不会再检索,所以结果为 a**b**c
c = '=*?a=b*c>*!=>'
print(c.strip('=*\?>!'))  # strip的检索表示可以多种,每个都会按照单个的情况分别检索,所以结果为 a=b*c
d = '!!!abc!!!'
print(d.lstrip('!'))  # 左移除lstrip,只从字符串最左边开始检索,所以结果为 abc!!!
e = '$$$abc$$$'
print(e.rstrip('$'))  # 右移除lstrip,只从字符串最右边开始检索,所以结果为 $$$abc

  6、切分功能split:把字符串按照某种分隔符号进行切分,分隔开的每个元素组成会组成一个列表。

扫描二维码关注公众号,回复: 9742306 查看本文章
a = 'abc def hij'
print(a.split())  # 若split不加具体内容,默认以空格为分隔符,即结果为 ['abc', 'def', 'hij']
b = 'abc*def*hij'
print(b.split('*'))  # 指定分隔符为*,即结果为 ['abc', 'def', 'hij']
c = 'abc=def=hij'
print(c.split('=', 1))  # 指定分隔次数为1,即结果为 ['abc', 'def=hij']
d = 'abc:def:ghi'
print(d.rsplit(':',1))  # lsplit从右侧开始检索分隔符,即结果为 ['abc:def', 'ghi']

  7、转化大小写lower和uppper:

a = 'ABCdef123'
print(a.lower())  # 把字符串中大写字母全部转变为小写字母,即结果为 abcdef123
print(a.upper())  # 把字符串中大写字母全部转变为小写字母,即结果为 ABCDEF123

  8、判断字符串头尾字符是否为目标内容的starswith和endswith:

a = 'abcdefg'
print(a.startswith('abc'))  # 结果为 True
print(a.startswith('ac'))  # 结果为 False
print(a.endswith('fg'))  # 结果为 True
print(a.endswith('gf'))  # 结果为 False

  9、把列表拼接成字符串join:前提:该列表元素全为字符串,然后按照某个分隔符,把这些元素组合成一个字符串。

a = ['a','b','c']  # 列表有三个元素,分别是 a b c
print('@'.join(a))  # 在每两个元素中间加上分隔符号@再组合成字符串,即结果为 a@b@c

  10、替换字符串某些字符replace:

a = 'aaabbbaaa'
print(a.replace('aaa', 'AAA'))  # 待替换字符写左边,替换的字符写右边,即结果为 AAAbbbAAA
print(a.replace('aaa', 'AAA', 1))  # 加上数量1,代表,从左往右替换,只执行一次,即结果为 AAAbbbaaa

  11、数字相关isdigit,isnumberic,isdecimal:

a = '123'
print(a.isdigit())  # 结果为True
b = '123aaa'
print(b.isdigit())  # 结果为False
num1 = b'4'  # bytes
num2 = u'4'  # unicode,python3中无需加u就是unicode
num3 = ''  # 中文数字
num4 = ''  # 罗马数字
print(num1.isdigit())  # 结果为True
print(num2.isdigit())  # 结果为True
print(num3.isdigit())  # 结果为False
print(num4.isdigit())  # 结果为False
# 说明isdigit只能识别:num1、num2
print(num2.isnumeric())  # 结果为True
print(num3.isnumeric())  # 结果为True
print(num4.isnumeric())  # 结果为True
# isnumberic可以识别:num2、num3、num4
print(num2.isdecimal())  # True
print(num3.isdecimal())  # False
print(num4.isdecimal())  # False
# isdecimal只能识别:num2

  12、其他了解性功能:

    ①find,rfind,index,rindex,count:

msg = 'hello egon hahaha'
print(msg.find('egon'))  # 返回要查找的字符串在大字符串中的起始索引,结果为 6
print(msg.index('egon'))  # 返回要查找的字符串在大字符串中的起始索引,结果为 6,此时作用与find一样
print(msg.find('xxx'))  # 找不到会返回-1
print(msg.index('xxx'))  # 找不到会抛出异常
msg = 'hello egon hahaha egon、 egon'
print(msg.count('egon'))  # 统计小字符串在大字符串中出现的次数,结果为 3

    ②center,ljust,rjust,zfill:

print('egon'.center(10, '*'))  # 原字符串居中,左右两边用*填充
print('egon'.ljust(10, '*'))  # 原字符串居最左,右边用*填充
print('egon'.rjust(10, '*'))  # 原字符串居最右,左边用*填充
print('egon'.zfill(10))  # 原字符串居最右,左边用0填充

    ③expandtabs:

a = 'aaa\tbbb'
print(a.expandtabs(3))  # 设置制表符代表的空格数为3,即结果为 aaa   bbb

    ④captalize,swapcase,title:

print("hello world egon".capitalize())  # 把字符串的首字母转为大写
print("Hello WorLd EGon".swapcase())  #  把字符串的大小写反转
print("hello world egon".title())  # 把字符串的每个英文单词的首字母转为大写

  13、is相关其他判断:

print('abc1'.islower())  # 字符串中的字母是否全为小写,结果为True
print('ABC1'.isupper())  # 字符串中的字母是否全为大写,结果为True
print('!Hello @World'.istitle())  # 字符串中的英文单词的首字母是否为大写,结果为True
print('123123aadsf'.isalnum())  # 字符串是否由字母或数字组成,结果为True
print('ad'.isalpha())  # 字符串是否由纯字母组成,结果为True
print('     '.isspace())  # 字符串是否由空格组成,结果为True
print('print'.isidentifier())  # 是否合法,关键字合法,结果为True
print('age_of_egon'.isidentifier())  # 等于变量名的命名规则,结果为True
print('1age_of_egon'.isidentifier())  # 结果为False

猜你喜欢

转载自www.cnblogs.com/caoyu080202201/p/12460071.html