字符串类型

字符串类型

=基本使用=
1、用途:记录描述性质的状态,例如名字,性别,国籍,诗词等

2、定义方式

name = "xiaoyunwei"	# name = str("xiaoyunwei")
# 引号可以是:''、""、""" """、''' '''
# 注意1:关于引号的嵌套(内层双引号、外层单引号)
# 注意2:
res = 'c:\a\b\new.txt'(前方加r或者再加一个右斜杠)

类型转换:str了一吧任意类型都转换成字符串类型

res = str([1,2,3])
print(type(res))

常用操作+内置方法

# 优先掌握的操作:
# 1、按索引取值(正向取+反向取):只能取
>>> msg = 'hello world'
>>> print(msg[0])
h
>>> print(msg[-1])
d
# 2、切片(顺头不顺尾,步长)---->复制操作(步长默认为1)
>>> msg = 'hello world'
>>> res = msg[1:5:1]
>>> print(res)
ello
# 可以省略起始位置
>>> print(msg[1:])
ello world
>>> print(msg[:-2])
hello wor
>>> print(msg[:])
hello world
>>> print(msg[-1:-3:-1])
dl
>>> print(msg[::-1])
dlrow olleh
# 3、长度len
>>> msg = 'hello\n'
>>> print(len(msg))
6
# 4、成员运算in和not in
>>> msg = 'lxx is sb'
>>> print('sb' in msg)
True
>>> print('sb' not in msg)	# 建议用这个方式
False
>>> print(not 'sb' in msg)
False
# 5、移除空白strip
>>> msg = '     lxx is sb          '
>>> print(msg)
     lxx is sb
>>> res = msg.strip()
>>> print(res)
lxx is sb

>>> msg = ' \n    lxx is sb          '	# /n也能去掉
>>> res = msg.strip()
>>> print(res)
lxx is sb

>>> msg = ",()*&hello=-&^,"
>>> res = msg.strip(",()*&=-&^,")	# 去掉左右两边的符号(属于范围里的就匹配)
>>> print(res)
hello

>>> msg = ",()*&h=-&^ello=-&^,"
>>> res = msg.strip(",()*&=-&^,")
>>> print(res)
h=-&^ello
# replace
>>> new_res = res.replace('=-&^','') # 替换(完全匹配才能替换)
>>> print(new_res)
hello

>>> msg = 'lhh is sb sb is skl'
>>> res = msg.replace('sb','SB',1)	# replace只能改变值,并且可以定义替换的次数
>>> print(res)
lhh is SB sb is skl
# 不是所有的功能运行完毕都有返回值
name = input("your name:").strip()
pwd = input("your password:").strip()
if name == "xiaoyunwei" and pwd == "123":
    print("OK!")
else:
    print("NO OK!")
# 6、切分split(把字符串切分为列表)
>>> info = "xiaoyunwei:123:10"
>>> res = info.split(":")
>>> print(res)
['xiaoyunwei', '123', '10']
>>> res = info.split(":",1)
>>> print(res)
['xiaoyunwei', '123:10']

#拼接
>>> res = ['xiaoyunwei','123','10'] # 前提是由纯字符串组成
>>> msg = ":".join(res)
>>> print(msg)
'xiaoyunwei:123:10'

# 7、循环
for i in 'hello':
    print(i)
h
e
l
l
o

# 需要掌握的操作:
# 1、strip、lstrip、rstrip
>>> print('******hello*******'.strip('*')) # 两边的*都去掉
hello
>>> print('******hello*******'.lstrip('*'))	# 只去掉左边的*
hello*******
>>> print('******hello*******'.rstrip('*'))	# 只去掉右边的*
******hello
# 2、lower、upper
>>> print('AbcDDDD'.lower()) # 所有字母哦度变成小写
abcdddd
>>> print('AbcDDDD'.upper()) # 所有字母哦度变成大写
ABCDDDD
# 3、startswith,endswith(判断某字符串是以什么开头的)
print("hello".startswith("he"))
True
print("hello".endswith("lo"))
True
# 4、format的三种玩法(格式化字符串)
# 方式一
x = "xiaoyunwei"
y = "18"
msg = "my name is %s my age is %s" %(x,y) # 使用占位符
print(msg)
my name is xiaoyunwei my age is 18
# 方式二
x = "xiaoyunwei"
y = "18"
# python 2.7
# msg = "my name is {} my age is {}".format(x,y)
# msg = "my name is {0} my age is {1}{0}{1}{0}".format(x,y)
msg = "my name is {n} my age is {a}".format(a=y,n=x)
msg = "my name is {name} my age is {age}".format(name="xiaoyunwei",age=18)
# 方式三
# python 3.5
msg = f"my name is {x} my age is {y}"
print(msg)
my name is xiaoyunwei my age is 18
my name is xiaoyunwei my age is 18xiaoyunwei18xiaoyunwei
my name is xiaoyunwei my age is 18
my name is xiaoyunwei my age is 18
my name is xiaoyunwei my age is 18


# 5、split、rsplit(一个从左往右切,另一个是从右往左切)
>>> info = 'xiaoyunwei:123:10'
>>> print(info.split(':'))
['xiaoyunwei', '123', '10']
>>> print(info.rsplit(':'))
['xiaoyunwei', '123', '10']
>>> print(info.split(':',1))
['xiaoyunwei', '123:10']
>>> print(info.rsplit(':',1))
['xiaoyunwei:123', '10']

# 6、join
# 7、replace
# 8、isdigit(判断字符串是否由纯数字组成)
>>> print('18'.isdigit())
True
>>> print('18.3'.isdigit())
False
>>> print('18 '.isdigit())
False
>>> print('18xx'.isdigit())
False
# 案例
age = input("your age:")
if age.isdigit():
    age = int(age)
    if age > 18:
        print("too big")
    elif age < 18:
        print("too small")
    else:
        print("right")
else:
    print("必须输入数字,小垃圾!")
    
# 了解的操作
# 1、find、rfind、index、rindex、count
#find\rfind
>>> msg = "hello sb sb is xxx"
>>> res = msg.find('sb')
>>> print(res)
6
>>> res = msg.rfind('sb')
>>> print(res)
9
>>> res = msg.find('hh')
>>> print(res)
-1
>>> res = msg.find('sb',0,3)
>>> print(res)
-1
#index\rindex(与find、rfind的区别就是未找到则会报错)
>>> res = msg.index('hh')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
#count(统计出现次数,默认从头到尾,可定义范围)
>>> msg = "hello sb sb is xxx"
>>> res = msg.count('sb')
>>> print(res)
2
>>> res = msg.count('sb',1,8)
>>> print(res)
1
# 2、center、ljust、rjust、zfill(控制打印)
>>> name = "xiaoyunwei"
>>> print(name.center(50,'*'))
********************xiaoyunwei********************	# 居中
>>> print(name.ljust(50,'*'))
xiaoyunwei****************************************  # 居左
>>> print(name.rjust(50,'*'))
****************************************xiaoyunwei  # 居右
>>> print(name.zfill(50))
0000000000000000000000000000000000000000xiaoyunwei	# 默认居右对齐,并且用0来填充
# 3、expandtabs
>>> print("hello\tworld")
hello   world
>>> print("hello\tworld".expandtabs(1))
hello world
# 4、captalize、swapcase、title
>>> msg = "hello world xiaoyunwei"
>>> print(msg.capitalize())
Hello world xiaoyunwei
>>> x = "AbCdE"
>>> print(x.swapcase())
aBcDe
>>> print(msg.title())
Hello World Xiaoyunwei
# 5、is数字系列
>>> num1=b'4'	# bytes
>>> num2=u'4'	# unicode,python3中无需家u就是unicode
>>> num3='四'    # 中文数字
>>> num4='IV'	# 罗马数字
# isdigit:bytes中包裹阿拉伯数字,str内包含阿拉伯数字
>>> print(num1.isdigit())
True
>>> print(num2.isdigit())
True
>>> print(num3.isdigit())
False
>>> print(num4.isdigit())
# isnumeric:str内包含阿拉伯数字、str内包含中文数字、str内包含罗马数字
>>> print(num1.isnumeric())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'isnumeric'
>>> print(num2.isnumeric())
True
>>> print(num3.isnumeric())
True
>>> print(num4.isnumeric())
True
#isdecimal:str内包含阿拉伯数字
>>> print(num1.isdecimal())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'isdecimal'
>>> print(num2.isdecimal())
True
>>> print(num3.isdecimal())
False
>>> print(num4.isdecimal())
False
# 6、is其他
>>> name='xiaoyunwei123'
>>> print(name.isalnum())	# 字符创有字母或数字组成
True
>>> print(name.isalpha())	# 字符串只由字母组成
False
>>> print(name.isidentifier())	#判断字符串是否包含python的关键字
True
>>> print(name.islower())	# 判断是否纯小写字母(里面包含的字母)
True
>>> print(name.isupper())	# 判断是否纯大写字母(里面包含的字母)
False
>>> print(name.isspace())	# 判断是否纯空格组成
False
>>> print(name.istitle())	# 判断首字母是否全部都是大写
False

=该类型总结=
存一个值

有序

不可变(1、可变:值变,id不变。可变不可bash 2、不可变:值变,id就变。不可变可bash)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值