python打印字符串类型_04-Python基础知识学习-------字符串类型

1 字符串的声明

字符串就是一系列的字符,在Python中使用 单引号或者双引号 括起来的就是字符串:

# 使用单引号定义字符串

name1 = '张三'

print(type(name1)) #

# 使用双引号定义的字符串

name2 = "李四"

print(type(name2)) #

如果字符串中包含单引号或者双引号需要注意:如果字符串中包含单引号,那么就需要使用双引号声明字符串

如果字符串中包含双引号,那么就需要使用单引号声明字符串

# 包含单引号的字符串

message1 = "This's Python"

print(message1) # This's Python

# 包含双引号的字符串

message2 = 'Say "Hello World"'

print(message2) # Say "Hello World"

除此之外还可以通过反斜杠转义符来实现:

# 包含单引号的字符串

print('I can\'t swim')

# 包含双引号的字符串

print("say\"Hello World\"")

在Python中还可以使用 多引号 来声明字符串,使用多引号声明的字符串可以换行:

# 多行字符串

message = '''第一行字符串第二行字符串第三行字符串'''

print(message)

# 第一行字符串

# 第二行字符串

# 第三行字符串注意:使用单引号或双引号同样可以实现字符串的换行效果,但是需要借助转义符来实现:

# 通过转义符来实现字符串换行

message = "第一行\n第二行\n第三行"

print(message)

# 第一行

# 第二行

# 第三行

字符串还提供了 str() 方法,该方法可以将任意类型的数据转换成字符串类型:

# 数字转换成字符串

print(type(str(10))) #

# 列表转换成字符串

print(type(str([1, 2, 3]))) #

# 字典转换成字符串

print(type(str({"name": "jason", "age": 18}))) #

# 元祖转换成字符串

print(type(str((1, 2, 3)))) #

# 集合转换成字符串

print(type(str({1, 2, 3, 4}))) #

2 字符串的运算

字符串可以进行 相加 和 相乘运算:相加其实就是简单的字符串拼接

相乘就相当于将字符串相加了n次

# 字符串的相加运算

name = "张三"

age = '18'

print(name + "今年" + age + "岁") # 张三今年18岁

# 字符串的相乘运算

print(name * 3) # 张三张三张三注意:虽然可以使用相加的方式拼接字符串,但是该方法效率很低,所以不建议使用。

3 访问字符串

3.1 按照索引访问

可以使用 变量名[索引值] 的方式读取字符串中的字符:当索引值是正数的时候表示正向取值(从左向右)

当索引值是负数的时候表示反向取值(从右向左)

# 声明一个字符串

message = "Hello Wolrd"

# 正向取值

print(message[1]) # e

# 反向取值

print(message[-1]) # d注意:字符串的索引是从0开始的,如果索引值超出了字符串范围就会报错:

# 声明一个字符串

message = "Hello World"

# 超出索引的范围就会报错

print(message[11])

# IndexError: string index out of range

该方法只能按照索引取值,不能更改值:

# 声明一个字符串

message = "Hello Wolrd"

# 使用索引的方式修改值会报错

message[1] = 'H'

# TypeError: 'str' object does not support item assignment

3.2 遍历字符串

可以使用for循环遍历字符串:

# for循环遍历字符串

for c in "Hello World":

print(c,end="-")

# H-e-l-l-o- -W-o-r-l-d-

3.3 切片

通过切片可以 获取指定范围的子字符串,它的基本语法如下:变量名[开始位置: 结束位置],它会返回从开始位置到结束位置的子字符串(包含开始位置,不包含结束位置):

# 声明一个字符串

message = "Hello Wolrd"

# 获取Hello

# H的索引是0 , o的索引是4

# 所以切片是从0 - 5

print(message[0: 5]) # Hello

可以省略开始位置和结束位置:省略开始位置表示从0开始

省略结束位置表示一直取到最后

同时省略开始和结束位置表示整个字符串的副本

# 声明一个字符串

message = "Hello Wolrd"

# 省略开始位置,表示从0开始

print(message[: 5]) # Hello

# 省略结束位置,表示一直取到最后

print(message[6:]) # Wolrd

# 同时省略表示取整个字符串

print(message[:]) # Hello Wolrd注意:冒号是不可以被省略的。

开始位置和结束位置的索引可以为负数,表示从右向左开始索引:

# 声明一个字符串

message = "12345678"

# 从右向左数第6个数到从右向左数第4个数之间

print(message[-6:-4]) # 34

使用切片时还可以传入第三个参数,用来表示步长:

# 声明一个字符串

message = "12345678"

# 设置步长

print(message[::2]) # 1357

步长也可以为负数,当步长为负数的时候表示从右向左取值:

# 声明一个字符串

message = "12345678"

# 步长为负数的时候表示从右向左取值

# 下面的代码是用来反转字符串

print(message[::-1]) # 87654321

4 成员运算符

成员运算符用来判断一个字符串是否是另外一个字符串的子字符串:a in b: b是不是包含a

a not in b: b是不是不包含a

# 声明字符串

message = "hello"

# msg2 是否包含 msg1

print("ell" in message) # True

# msg2 是否不包含 msg1

print('ell' not in message) # False

5 格式化字符串

5.1 修改字符串的大小写title(): 以首字母大写的方式显示每个单词

upper(): 将字符串改为全部大写

lower():将字符串改为全部小写

capitalize(): 首个单词的首字母大写

swapcase(): 大小写翻转

message = "stephen Curry"

# 首字母大写

print(message.title()) # Stephen Curry

# 全部大写

print(message.upper()) # STEPHEN CURRY

# 全部小写

print(message.lower()) # stephen curry

# 首字母大写

print(message.capitalize()) # Stephen curry

# 反转大小写

print(message.swapcase()) # STEPHEN cURRY

# 原来字符串不会被修改

print(message) # stephen Curry注意:这些方法会返回修改后的新字符串,不会改变原来的字符串。

5.2 f 字符串方法

要在字符串中插入变量的值,可以 在前引号前加上字母 f,再将要插入的变量放在花括号内,当Python显示字符串的时候会将每个变量都替换为其值:

# f-string的方法格式化字符串

name = "张三"

age = 12

print(f"{name}今年{age}岁了") # 张三今年12岁了注意:该方法是Python3.6引入的。

5.3 format方法

f字符串是Python3.6才引入的,在此版本之前可以使用字符串的内置方法format代替:

age = 18

# My name is Tom, I'm 18 years old.

print("My name is {name}, I'm {age} years old.".format(name="Tom",age=age))

format括号内在传参数的时候完全可以打乱顺序:

age = 18

# My name is Tom Tom, I'm 18 years old.

print("My name is {name} {name}, I'm {age} years old.".format(name="Tom",age=age))

如果 {} 中没有传入key值,那么传入的值会按照位置与 {} 一一对应:

age = 18

# My name is Tom, I'm 18 years old.

print("My name is {}, I'm {} years old.".format("Tom",age))

也可以把format传入的多个值当作一个列表,然后用 {索引} 取值:

# my name is Tom, my age is 18!

print('my name is {0}, my age is {1}!'.format('Tom', 18))

# my name is Tom, my age is 18!

print('my name is {1}, my age is {0}!'.format(18, 'Tom'))

5.4 删除空白

在程序中额外的空白可能会令人迷惑,比如 'python' 和 ' python '看起来几乎没有什么两样,但是对于程序来说它们是两个不同的字符串。在进行字符串比较的时候就会产生迷惑,Python提供了下面的方法来除去字符串首尾的空白:rstrip: 去除字符串末尾的空白

lstrip:去除字符串开头的空白

strip: 去除字符串两边的空白

# 声明一个变量

name = " 中间的字符 "

print("开头的字符" + name + "结尾的字符") # 开头的字符 中间的字符 结尾的字符

# 去除开头的空白

print("开头的字符" + name.lstrip() + "结尾的字符") # 开头的字符中间的字符 结尾的字符

# 去除末尾的空白

print("开头的字符" + name.rstrip() + "结尾的字符") # 开头的字符 中间的字符结尾的字符

# 去除两边的空白

print("开头的字符" + name.strip() + "结尾的字符") # 开头的字符中间的字符结尾的字符注意:这三个方法都不会修改原来的字符串,而是将去除空白的字符串作为新的字符串返回。

可以在方法中传入参数,用来删除首尾指定的字符:

# 声明字符串

message = "****Hello*****"

# 删除开头的*

print(message.lstrip('*')) # Hello*****

# 删除结尾的*

print(message.rstrip('*')) # ****Hello

# 删除两端的*

print(message.strip('*')) # Hello

5.5 字符串对齐方法center:字符串居中显示,不够的填充

ljust: 字符串左对齐显示,不够的填充

rjust: 字符串右对齐显示,不够的填充

zfill: 字符串右对齐显示,不够用0填充

print("Tom".center(30, "-")) # -------------Tom--------------

print("Tom".ljust(30, "-")) # Tom---------------------------

print("Tom".rjust(30, "-")) # ---------------------------Tom

print("Tom".zfill(30)) # 000000000000000000000000000Tom

5.6 expandtabs方法

该方法用来 修改 \t(制表符)代表的空格数:

print("Hello\tWorld") # Hello World

print("Hello\tWorld".expandtabs(1)) # Hello World

6 组织字符串

6.1 获取字符串长度

可以通过len()方法获取字符串的长度:

# 声明一个字符串

message = "Hello Wolrd"

# len获取字符串的长度

print(len(message)) # 11

6.2 分隔字符串

可以使用 split()方法分隔字符串,默认情况下是使用空格分隔字符串,返回的是一个列表:

# 声明字符串

message = "Hello World"

print(message.split()) # ['Hello', 'World']

也可以传入参数指定分隔符,按照括号内指定的字符切割字符串:

# 声明字符串

message = "192.168.1.1"

print(message.split('.')) # ['192', '168', '1', '1']

还可以传入第二个参数,指定分隔的次数:

ip = "192.168.1.1"

# ['192', '168', '1.1']

print(ip.split(".", 2))

Python还提供了 rsplit() 方法,该方法刚好与split方法相反,从右往左切割,其它使用方法和split类似:

# 默认是用空白字符

print("Hello World".rsplit()) # ['Hello', 'World']

# 第一个参数指定分隔符

print("192.168.1.1".rsplit(".")) # ['192', '168', '1', '1']

# 第二个参数指定分隔次数

print("192.168.1.1".rsplit(".", 2)) # ['192.168', '1', '1']

6.3 join方法

该方法从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接结果为字符串:

# 从字符串中取出多个字符串,然后进行拼接

print(",".join("123456")) # 1,2,3,4,5,6

# 从列表中取出多个字符串,然后进行拼接

print(".".join(["192", "168", "2", "1"])) # 192.168.2.1

6.4 replace方法

该方法用新的字符替换字符串中旧的字符,语法:replace('旧内容', '新内容'):

# 替换字符

print("Hello Python".replace("Python", "World"))

# Hello World

可以使用第三个方法指定修改的个数:

# 指定替换次数

# Hello PP, I love Python

print("Hello Python, I love Python".replace("Python", "PP", 1))

7 分析字符串

7.1 startswith 和 endswithstartswith(): 判断字符串是否以括号内指定的字符开头,结果为布尔值True或False

endswith():判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False

# 声明字符串

message = "Hello World"

# 是否以指定字符串开头

print(message.startswith("He")) # True

# 是否以指定字符串结尾

print(message.endswith("dd")) # False

7.2 isXXX判断方法isdigit、isdecimal、isnumeric: 判断字符串是否是纯数字组成,返回结果为True或Falseisdigit: 可以识别bytes和unicode类型

isdecimal:可以用来判断uncicode类型(bytes类型无isdecimal方法)

isnumberic: 可以用来判断unicode、中文数字和罗马数字(bytes类型无isnumberic方法)

num1 = b'4' #bytes

num2 = u'4' #unicode,python3中无需加u就是unicode

num3 = '四' #中文数字

num4 = 'Ⅳ' #罗马数字

# True True False False

print(num1.isdigit(), num2.isdigit(), num3.isdigit(), num4.isdigit())

# True False False

print(num2.isdecimal(), num3.isdecimal(), num4.isdecimal())

# True True True

print(num2.isnumeric(), num3.isnumeric(), num4.isnumeric())

三者都不能用来判断浮点数:

num1 = '4.3'

# False False False

print(num1.isdigit(), num1.isdecimal(), num1.isnumeric())isalnum():字符串中既可以包含数字也可以包含字母

isalpha():字符串中只包含字母

isidentifier(): 判断字符串是不是合法的变量名

islower(): 字符串是否是纯小写

isupper(): 字符串是否是纯大写

isspace(): 字符串是否全是空格

istitle(): 字符串中的单词首字母是否都是大写

name = 'tony123'

print(name.isalnum()) # True

print(name.isalpha()) # False

print(name.isidentifier()) # True

print(name.islower()) # True

print(name.isupper()) # False

print(name.isspace()) # False

print(name.istitle()) # False

7.3 查找字符串

7.3.1 find 和 rfindfind: 从指定范围内查找子字符串的起始索引,找得到则返回起始索引值,找不到则返回-1(可以指定查找位置)

rfind: 同find,从右向左查找

'''find的使用方法'''

# 找到则返回索引

print("12345".find("34")) # 2

# 找不到返回-1

print("12345".find("9")) # -1

# 指定查找范围

print("12345".find("3", 0, 2)) # -1

'''rfind的使用方法'''

# 找到则返回索引

print("12345".rfind("4")) # 3

# 找不到返回-1

print("12345".rfind("9")) # -1

# 指定查找范围

print("12345".rfind("3", 0, 2)) # -1

7.3.2 index 和 rindexindex:同find,但在找不到时会报错

rindex: 同index,从右向左查找

'''index的使用'''

# 找到返回索引

print("12345".index("4")) # 3

# 指定查找范围

print("12345".index("3", 0, 3)) # 2

# 找不到报错

# print("12345".index("9"))

'''rindex的使用'''

# 找到返回索引

print("12345".rindex("4")) # 3

# 指定查找范围

print("12345".rindex("3", 0, 3)) # 2

# 找不到报错 # print("12345".rindex("9"))

7.3.3 count

统计字符串在大字符串中出现的次数,可以指定查找的位置:

'''count的使用'''

# 查找出现的次数

print("Hello World".count("o")) # 2

# 找不到返回0

print("Hello World".count("1")) # 0

# 可以指定查找范围

print("Hello Wolrd".count("H", 1, 5)) # 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值