Python基本数据类型之字符串str

来源: “码农不会写诗”公众号
链接:Python基本数据类型之字符串str

字符串str

Python基本数据之字符串(str)即用单引号或双引号括起来的文本数据。


01 基本概念

即用单引号或双引号括起来的文本数据。

Python字符串(str)用于表示文本数据,是一种非常基础且常用的数据类型,一定要扎实掌握。字符串可以包含数字、字母、下划线以及任何Unicode字符。

单引号和双引号:用于表示普通的字符串。

str1 = 'Hello, World!'
str2 = "Hello, World!"

三引号:主要在表示多行字符串或字符串中包含单引号或双引号时使用。

str3 = '''Hello,
World!'''  # 多行字符串  
str4 = """He's happy!"""  # 字符串内容包含单引号'

需要注意的是字符串是不可变的(Immutable):一旦创建,就不能更改字符串中的字符。

str1 = 'Hello, World!'
str1[0] = 'a'  # 错误操作, TypeError: 'str' object does not support item assignment

字符串是序列:可以进行索引和切片操作,索引操作取某位置字符值,切片操作允许获取字符串一部分。
正索引:从左到右,以0开始;
负索引:从右到左,以-1开始。

str1 = 'Hello, World!'
print(str1[0])    # H
print(str1[1])    # e
print(str1[-1])   # !
print(str1[-2])   # d
# 索引规则为:左闭右开
print(str1[0:5])  # Hello, 切片取0到5
print(str1[7:])   # World!, 切片取7到结束
print(str1[-6:-1])  # World, 切片取倒数2到倒数6

02 常用操作

+ 操作符连接字符串。

str1 = 'Hello'
str2 = ', '
str3 = 'World!'
print(str1 + str2 + str3)  # Hello, World!

*操作符重复字符串。

str1 = 'Hello, '
print(str1 * 3)  #  Hello, Hello, Hello,

find()、index() 方法查找子字符串。

str1 = 'Hello, World!'
print(str1.find(', '))     # 5, 从索引5开始
print(str1.index('e'))     # 1, 从索引1开始
print(str1.find('World'))  # 7, 从索引7开始
print(str1.index('W'))     # 7, 从索引7开始
print(str1.find('X'))   # -1, 查找不到返回-1
print(str1.index('X'))  # 查找不到直接报错, ValueError: substring not found

replace() 方法替换子字符串。

str1 = 'Hello, World!'
str2 = str1.replace('World', 'Python')
print(str1)  # Hello, World!, 原字符串str1没有被修改
print(str2)  # Hello, Python!

字母大小写转换。
upper(): 所有字母转换为大写字母;
lower(): 所有字母转换为小写字母;
capitalize(): 第一个字母转换为大写,其余字母转换为小写;
title(): 每个单词的首字母转换为大写,其余字母转换为小写,通常用于处理标题;
swapcase(): 大写字母转换为小写,小写字母转换为大写。

str1 = 'Hello, World!'
print(str1.upper())       # HELLO, WORLD!
print(str1.lower())       # hello, world!
print(str1.capitalize())  # Hello, world!
print(str1.title())       # Hello, World!
print(str1.swapcase())    # hELLO, wORLD!

去除字符操作。
strip(): 去除字符串首尾的指定字符(默认为空格)。也可传入一个参数,指定要去除的字符,若传入字符数组,则去除两端所有相应的字符,直到没有匹配的字符为止。
rstrip(): 去除字符串末尾(right) 的指定字符(默认为空格)。也可传入一个参数,同strip()
lstrip(): 去除字符串开头(left) 的指定字符(默认为空格)。也可传入一个参数,同strip()

# 采用f-string(格式化字符串字面量)格式化输出,可简单理解为将{}中变量的值直接填在字符串中{}所在的位置
str1 = '   Hello, World!   '
print(f"[{str1}]")           # [   Hello, World!   ]     # [    Hello, World!    ]
print(f"[{str1.strip()}]")   # [Hello, World!]
print(f"[{str1.rstrip()}]")  # [   Hello, World!]  
print(f"[{str1.lstrip()}]")  # [Hello, World!   ]

03 字符串格式化

字符串格式化是一种将变量插入到字符串中的方法。主要有以下三种常用方法。
1. 传统%格式化
在字符串中使用%符号作为占位符,并在后面的元组中传递相应变量,Python会自动将变量的值嵌入到字符串中。%s表示字符串;%d表示整数;%.2f表示保留两位小数的浮点数(保留小数位数:%.1f一位小数、%.5f五位小数)

name1 = 'World'
name2 = 'Python'
pi = 3.1415927
print('Hello, %s!' % name1)  # Hello, World!
print('Hello, %s and %s!' % (name1, name2))  # Hello, World and Python!
print("Rounded pi: %.1f" % pi)  # Rounded pi: 3.1
print("Rounded pi: %.4f" % pi)  # Rounded pi: 3.1416

2. format() 方法
str.format() 方法是Python3引入的字符串格式化方法。通过在字符串中使用花括号 {} 来占位,并在后面调用 .format() 方法传递变量,Python会自动将变量的值嵌入到字符串中。格式化浮点数时,在{}中:后指定保留小数位数({:.1f}一位小数、{:.5f}五位小数)

name1 = 'World'
name2 = 'Python'
pi = 3.1415927
print('Hello, {}!'.format(name1))  # Hello, World!
print('Hello, {} and {}!'.format(name1, name2))  # Hello, World and Python!
print("Pi rounded to 2 decimal places: {:.2f}".format(pi))
print("Rounded pi: {:.2f}".format(pi))  # Rounded pi: 3.1
print("Rounded pi: {:.4f}".format(pi))  # Rounded pi: 3.1416

3. f-string (Python 3.6+)
在字符串前加上字母f,并在字符串内部使用花括号 {} 包裹变量,Python会自动将变量的值嵌入到字符串中。格式化浮点数时,在{}中:后指定保留小数位数({num:.1f}一位小数、{num:.5f}五位小数)

name1 = 'World'
name2 = 'Python'
pi = 3.1415927
print(f'Hello, {name1}!')  # Hello, World!
print(f'Hello, {name1} and {name2}!')  # Hello, World and Python!
print(f"Rounded pi: {pi:.2f}")  # Rounded pi: 3.1
print(f"Rounded pi: {pi:.4f}")  # Rounded pi: 3.1416

04 拓展1之Python字符串的编码与解码

文本字符串和字节序列是信息表达的两种基本形式,Python提供了简洁而强大的机制来处理两种形式之间的转换,即字符串的编码与解码。

编码:字符串到字节的转换
即将字符串(str)转换成字节序列(bytes)
在处理文件、网络传输或与底层系统交互时较为常用,借助encode() 方法可轻松实现。

text1 = "Hello, World!"
# b'Hello, World!', 使用UTF-8编码转换为字节序列
print(text1.encode('utf-8')) 
text2 = "我爱Python!" 
# b'\xe6\x88\x91\xe7\x88\xb1Python!' 使用UTF-8编码转换为字节序列
print(text2.encode('utf-8'))

解码:字节到字符串的转换
即将字节序列(bytes)转换成字符串(str)。
在使用二进制数据或从文件中读取数据时较为常用,借助**decode()**方法可轻松实现。

text1 = "Hello, World!"
byte_text1 = text1.encode('utf-8')
print(byte_text1.decode('utf-8'))  # Hello, World!

text2 = "我爱Python!"
byte_text2 = text2.encode('utf-8')
print(byte_text2.decode('utf-8'))  # 我爱Python!

今天的内容就到这里啦,先拜了个拜~

上一篇:Python基本数据类型之复数complex
下一篇:Python基本数据类型之布尔bool

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农不会写诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值