python中的字符串是什么数据类型_Python数据类型之字符串

一:概述

Python中的字符串的一些概念

可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型

字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列,同时修改某个位置的字符是不被允许的

在Python3中,字符串可以分为三类,str用于Unicode文本,bytes用于二进制数据,bytearray是bytes的一种可变的变体

1.1 字符串的创建

通过单引号,双引号,三引号来创建一个字符串对象,本质上单引号和双引号及三引号的作用是一样的。

name1 = 'wangys'name2= "wangys"name3= '''wangys'''使用单引号,双引号及三引号本质是一样的,都可以创建一个字符串对象

1.2 其他

也可以将不同的字串进行合并,字串之间使用空格,作用类似于 +号操作

name = 'wa' "ng" '''ys'''

print(name)

# wangys

name = 'wa',"ng",'''ys''' # 如果之间使用逗号,会组成一个元祖

print(name)

('wa', 'ng', 'ys')

二: 基本操作

索引

分片

乘法

判断是否包含值

长度

最大值

最小值

2.1 字符串索引及切片

字符串时有序字符集合,可以通过位置(索引)找到相应的元素

Python中字符的偏移量是左到右开始计数的,从0开始,到字符串长度-1,也可以通过负数取得,负数偏移量跟这个字符串的长度之和就是这个字符的正偏移量

表示方法是一对[]括号将偏移量写入即可得到该偏移量的字符

分片时使用冒号分隔,切片结果包括左边界,不包括右边界,即顾头不顾尾

分片时如果忽略了边界,左边界从0开始,右边界到字符串长度-1结束即到字符串的结尾并包括这个结尾

分片时如果指定了步进数,意思是每隔步进数取一个索引值

切片操作不仅仅对字符串有效,对元祖及列表也是一样的

如果索引过界,通过索引取值时会报错

2.1.1 索引

name = 'wangys'

print(name[0])

print(name[2])

print(name[-1])

print(name[-3])

# w

# n

# s

# g

2.1.2 分片(slice)

name = 'wangys'

# 没有定左右边界,则包括整个字符串

print(name[:])

# wangys

# 没有定左边界,则从0开始

print(name[:3])

# wan

# 如果没有定右边界,则到字符串的结尾

print(name[1:])

# angys

#左右都定了边界,顾首不顾尾

print(name[1:-1])

# angy

# 左右都定了边界,顾首不顾尾

print(name[1:3])

an

name = 'wangys'

# 步长默认情况

print(name[::1])

# 返回取整个字符串

print(name[::-1])

# 偏移量从1到5没隔2步取一个索引

print(name[1:5:2])

# 偏移量从5到1 每隔2步取一个索引

print(name[5:1:-2])

2.2 字符串拼接“+”

first_name = 'jack'second_name= 'john'name= first_name+' '+second_nameprint(name)#jack john

# 仅限字符串凭借,当使用数字类型时会报错

name = 'wangys'

age = 18

info = name+age

print(info)

# TypeError: must be str, not int

name = 'wangys'

age = '18'

info = name+age

print(info)

# wangys18

2.3 字符串多复制*

name = 'wangys'ret= name*3

print(ret)

# wangyswangyswangys

print('-'*8)

--------

2.4 计算字符串的长度

# 使用len函数计算字符串中字符的个数

name = 'wangys'

print(len(name))

# 6

2.5 循环遍历整个元素

name = 'wangys'

for i inname:print(i,end=' ')#w a n g y s

2.6 in操作

info = 'I love you'

print('love' ininfo)print('you' not ininfo)#True#False

2.7 max min

按照ASCII计算最大和最小值

name = 'wangys'

print(max(name))print(min(name))#y#a

三: 字符串常用的操作

3.1 center

将字符串居中显示

有两个参数,第一个参数是整个字符串的长度,第二个参数是填充字符串(长度为1)

name = 'wangys'

print(name.center(30,'*')) #长度30,不够使用*填充#************wangys************

name= 'wangys'

print(name.center(30,'*#')) #填充字符必须是长度为1的字符#TypeError: The fill character must be exactly one character long

name= 'wangys'

print(name.center(30)) #默认用空格填充#wangys

3.2 strip

strip 默认删除两边的空白,空白包括空格,制表符,换行符等.

插在中间的空格不会删掉,也可以制定删除的特殊符号,但还是哪个原则,插在中间的并不删除

lstrip 删除左边

rstrip 删除右边

name = input('请输入你的名字:')

if name == 'wangys':

print('你好啊')

name = input('请输入你的名字:').strip()

if name == 'wangys':

print('你好啊')

name = ' #wan#gys*'

print(name.strip(' #*'))

name = ' wangys '

print(name.lstrip())

print(name.rstrip())

3.3 startswith/endswith

以什么为开头,以什么结尾

name = 'wangys'

print(name.startswith('wa'))

print(name.startswith('ng',2,5))

print(name.endswith('ys'))

应用:判断请求,以哪个字符串开始,或者结尾

name = 'wangys'

if name.startswith('wa'):

pass

elif name.startswith('ll'):

pass

importos

files= os.listdir('.')#找出已py文件结尾的文件

py_files = [file for file in files if file.endswith('.py')]print(py_files)#找出以py或者以sh结尾的文件 多个条件过滤时使用元祖条件(必须是元祖)

py_sh_files = [file for file in files if file.endswith(('.py', '.sh'))]print(py_sh_files)

3.4 find

找匹配得子字符串得索引

如果找到就将找到得第一个符合匹配得子字符串索引返回,如果找不到就返回-1

可以指定起始和结束位置进行查找

s = 'hello world'

print(s.find('world'))

# 6

# 找到了就不会再往后找了

s = 'hello world'

print(s.find('o'))

# 4

# 第二个参数表示从第7个字符开始查找

s = 'hello world'

print(s.find('o',6))

# 7

# 表示从7到10之间得字符查找

s = 'hello world'

print(s.find('o',7,10))

# 7

# 如果找不到就返回-1

s = 'hello world'

print(s.find('o',10,18))

# -1

# 用户输入大字符串,循环找出用户输入的字符串的位置

s = input('请输入大的字符串:')

whileTrue:

subString = input('请输入要查询的子字符串:')

if subString.lower() == 'end':

break

elifsubString:

start =0

end =len(s)

whileTrue:

startPostion = input('请输入开始查找的位置:')

if startPostion == '':

startPostion =start

elifstartPostion.isdigit():

startPostion =int(startPostion)

break

else:

print('请输入数字')

continue

whileTrue:

stopPostion = input('请输入结束查找的位置:')

if stopPostion == '':

stopPostion =end

elifstopPostion.isdigit():

stopPostion =int(stopPostion)

break

else:

print('请输入数字')

continueindex =s.find(subString,startPostion,stopPostion)

if index == -1:

print('没找到')

else:

print("'{}' 在 '{}'出现的位置是{}".format(subString,s,s.find(subString,startPostion,stopPostion)))

else:

print('请不要输入空字符串')

3.5 index

找出子字符串的索引位置

如果找不到就报错

name = 'wangys'

print(name.index('a'))print(name.index('angy'))print(name.index('lala'))#1#1#ValueError: substring not found

3.6 split

将字符串进行切割

于join方法互为逆方法,将字符串生成列表类型

默认以空格,制表符,换行符作为分隔符,也可以指定切割符

path = '/usr/local/nginx'

listPath = path.split('/')

print(listPath)

s = r'\\'

windowsPath = s.join(listPath)

print('C:'+windowsPath)

# ['', 'usr', 'local', 'nginx']

# C:\\usr\\local\\nginx

3.7 capitalize

首字母大写

name = 'wangyongsheng'

name = name.capitalize()

print(name)

# Wangyongsheng

不论字符串里是否有大写字母,都会将首字母大写,其他的都是小写

name = "WangYS"

name = name.capitalize()

print(name)

# Wangys

3.8 upper/lower

全部大写

name = 'wangys'

name = name.upper()

print(name)

全部小写

name = 'WangYongSheng'

name = name.lower()

print(name)

应用:比如说验证码校验,对用户输入不区分大小写

code_num = 'WangYs'

input_num = input("请输入验证码,不区分大小写:")

if code_num.lower() == input_num.lower():

print("输入正确")

else:

print("请重新输入")

3.9 swapcase

name = 'WangYs'

name = name.swapcase()

print(name)

3.10 title

将以空格或者其他特殊字符或者数字隔开的字符串首字母大写

name = 'wang yong sheng'

name = name.title()

print(name)

name = 'wang*yong-sheng'

name = name.title()

print(name)

3.11 replace

字符串是不可变数据类型,所谓修改并不是在本身上做修改,而是生成了一个新的字符串。

可以使用replace进行修改

msg = 'wangys wangys'

print(msg.replace('wangys','wc'))

print(msg.replace('wangys','wc',1))

# wc wc

# wc wangys

3.12 count

1: 如果多个,就返回一个数

2:如果没有,返回0

3:可以切片后再进行计数

msg = 'My name is wangys'

print(msg.count('a'))

print(msg.count('x'))

print(msg.count('wangys'))

print(msg.count('a',2,5))

3.13 isdigit/isalnum/isalpha

isdigit 判断字符串只有数字组成

isalpha 判断字符串只有字母组成

isalnum 判断字符串是否有数字和字母组成

msg = 'wangys123'

print(msg.isalnum()) #字符串由字母或数字组成

print(msg.isalpha()) #字符串只由字母组成

print(msg.isdigit()) #字符串只由数字组成

四 :字符串格式化

4.1 %s %d

name = input("姓名:")

age= int(input("年龄:"))

height= int(input("身高:"))

msg= '''-------- Info of %s ---------

姓名:%s

年龄:%d岁

身高:%scm''' %(name,name,age,height)print(msg)

4.2 {} 按照位置

name = input("姓名:")

age= int(input("年龄:"))

height= int(input("身高:"))

msg= '''-------- Info of {} ---------

姓名:{}

年龄:{}岁

身高:{}cm'''.format(name,name,age,height)print(msg)

4.3 {} 按照指定位置

name = input("姓名:")

age = int(input("年龄:"))

height = int(input("身高:"))

msg = '''

-------- Info of {1} ---------

姓名:{1}

年龄:{2}岁

身高:{3}cm

'''.format(name,name,age,height)

print(msg)

4.4 {} 按照关键字

name = input("姓名:")

age= int(input("年龄:"))

height= int(input("身高:"))

msg= '''-------- Info of {name} ---------

姓名:{name}

年龄:{age}岁

身高:{height}cm'''.format(name=name,age=age,height=height)print(msg)

五:其他操作

1: 利用int或者float进行类型转换

a = 1b = '2'

print(a+b) # 字符串无法跟数字相加

TypeError: unsupported operand type(s) for +: 'int' and 'str' # 报错a = 1b = '2'b =int(b) # 可以通过int()函数将字符串数字转换为数字,然后进行运算

print(a+b)

# 3

2: len函数

去字符串字符的长度

name='wangys'

print(len(name))

遍历字符串

根据索引

name='wangys'count=0while count

count+=1

for 循环

for 变量 in 可迭代对象

name = 'wangys'

for i inname:print(i)

3 join 方法

该方法用于连接序列中的方法

跟split方法正好相反

join方法只能用于字符串类型,如果是其他数据类型,则会报错

list = ['1','2','3']

s = '+'ret =s.join(list)

print(ret)

# 1+2+3

dir = ['','usr','local','nginx']

linux_s = '/'linuxPath =linux_s.join(dir)

windows_s=r'\\'windowsPath =windows_s.join(dir)

print(linuxPath)

print('C:'+windowsPath)

# /usr/local/nginx

# C:\\usr\\local\\nginx

list = [1,2,3,4,5]

s = '+'

print(s.join(list))

# TypeError: sequence item 0: expected str instance, int found

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值