#

2. 字符串类型

2. 字符串类型

2.1 作用:

  • 记录描述性质的状态,例如名字,一段话,性别

2.2 定义

  • 用引号(' '," ",''' ''',""" """,)包含的一串字符
name = "egon"     # name = str("egon")
print(name)  

x = "18"   # 由数字组成的字符串,是字符串类型,不是int类型
print(type(x))

'name' = 'egon' # 语法错误,等号左边是变量名,变量名的命名不能有引号

name  # 代表访问变量名字
'name'  # 代表的是值

2.3 类型转换

  • str可以把任意其他类型都转成字符串
res=str({'a.txt':1})
print(res,type(res))

2.4 内置方法

优先掌握:

1. 按索引取值(正向取+反向取)

  • 只能取,不能改
msg = 'hello world'
# 正向取
print(msg[0])
print(msg[5])
# 反向取
print(msg[-1])   # 结果为d

# 只能取,不能改
msg[0] = 'H'   # 报错

2. 切片:索引的拓展应用

  • :索引的拓展应用,从一个大字符串中拷贝出一个子字符串
msg = 'hello world'
# 顾头不顾尾
res = msg[0:5] # x,顾头不顾尾,只能取到4(01234)
print(res)   # 结果为hello
print(msg)

# 步长
res = msg[0:5:2] # 0 2 4
print(res) # 结果为 hlo

# 反向步长(了解)
res = msg[5:0:-1]
print(res) #" olle"

msg = 'hello world'
res = msg[:] # res=msg[0:11],默认起始位置到最后位置
print(res)

res = msg[::-1] # 把字符串倒过来
print(res)    # 输出结果为 dlrow olleh

3. 长度 len

msg = 'hello world'
print(len(msg))         # 输出 11

4. 成员运算in和not in

  • 判断一个子字符串是否存在于一个大字符串中
print("alex"  in  "alex is sb")
print("alex"  not in  "alex is sb")
print( not "alex" in "alexissb")      # 不推荐使用

5. 移除字符左右两侧的符号 strip

# 1. 默认去掉的空格
msg = '      egon      '
res = msg.strip()
print(msg) 	# 不会改变原值
print(res) 	# 是产生了新值

# 2. 去掉左右两侧的符号
msg = '****egon****'
print(msg.strip('*'))     # 去掉左右两侧的*

# 3. 了解:strip只取两边,不去中间
msg = '****e*****gon****'
print(msg.strip('*'))		# 输出结果为e*****gon

msg = '**/*=-**egon**-=()**'
print(msg.strip('*/-=()')) 	  # 输出egon

# 4. 应用
inp_user = input('your name>>: ').strip() 		# inp_user = " egon"
inp_pwd = input('your password>>: ').strip()
if inp_user == 'egon' and inp_pwd == '123':
     print('登录成功')
else:
     print('账号密码错误')

6. 切分split:字符串——>列表

  • 把一个字符串按照某种分隔符进行切分,得到一个列表
# 默认分隔符是空格
info = 'egon 18 male'
res = info.split()
print(res)    # 输出结果为 ["egon","18","male"]

# 指定分隔符
info = 'egon:18:male'
res = info.split(':')
print(res)			# 输出结果为 ["egon","18","male"]

# 指定分隔次数(了解)
info = 'egon:18:male'
res = info.split(':',1)
print(res)

7. 循环

info = 'egon:18:male'
for x in info:
     print(x)

需要掌握:

1. strip ,lstrip ,rstrip 去符号

msg = '***egon****'
print(msg.strip('*'))    # 去左右两边的符号
print(msg.lstrip('*'))   # 去左边的符号
print(msg.rstrip('*'))   # 去右边的符号

2. lower,upper 全为大/ 小写

msg = 'AbbbCCCC'
print(msg.lower())     # 全为小写 abbbcccc
print(msg.upper())    # 全为大写 ABBBCCCC

3. startswith,endswith 判断开始/结尾的字符

print("alex is sb".startswith("alex"))    # 判断是不是以alex开始的
print("alex is sb".endswith('sb'))       # 判断是不是以sb结尾的

4. format

5. split,rsplit: 将字符串切成列表

info = "egon:18:male"
print(info.split(':',1)) 	# ["egon","18:male"]
print(info.rsplit(':',1)) 	# ["egon:18","male"],从右往左切

6. join,把列表拼接成字符串

l = ['egon', '18', 'male']
res = l[0] + ":" + l[1] + ":" + l[2]
res = ":".join(l) 	# 按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串
print(res)		# egon:18:male

l = [1,"2",'aaa.txt']
":".join(l)

7. replace 替换字符串

msg = "you can you up no can no bb"
print(msg.replace("you", "YOU", ))      # 替换的字符串,替换成什么样,默认替换所有
print(msg.replace("you", "YOU", 1))    # 替换的字符串,替换成什么样,替换几次

8. isdigit 判断字符串是否由纯数字组成

print('123'.isdigit())
print('12.3'.isdigit())

age = input('请输入你的年龄:').strip()
if age.isdigit():
    age = int(age)    # int("abbab")
    if age > 18:
        print('猜大了')
    elif age < 18:
        print('猜小了')
    else:
        print('才最了')
else:
    print('必须输入数字,傻子')

了解

其他使用:

字符串的嵌套,注意:内层用单引号,外层应该用双引号

print("my name is 'egon' ")
print("my name is \"egon \" ") #  \转意符号
  • 字符串之间可以相加,但仅限于字符串与字符串之间进行

  • 代表字符串的拼接,了解即可,不推荐使用,因为str之间的相加效率极低

print(' my name is ' + ' egon ')
print(' = ' * 20)
posted @ 2020-07-30 17:19  苒苒物华休&  阅读(202)  评论(0编辑  收藏  举报