是 由多个 字符 组成的 文本 内容 、在 python 中 可以使用 双引号 、 单引号 或者 三引号 来标记 字符串类型。
在 编程语言中, 字符串是 使用 频率 最高的一种数据类型 。
Python 中的 字符串 是 不可变的 序列
字符串 可以 使用 双引号 、 单引号 或者 三引号 进行 定义 、 且 支持 不同的 符号 之间的 嵌套 。
str(obj) 可以将任何数据类型转换为字符串
+
: 字符串的拼接"hello" + " world" # hello world
"1" + "2" # 12
"1" + 2 # 错误的 , 可以 改成 "1" + str(2)
+
前后 必须 均为 字符串 、如果 某一个类型 不是字符串,则 产生错误 ,可以 通过str
函数 强制 将 非字符串类型 转换成 字符串 类型。
*
: 重复 字符串 的次数"hello" * 3 # hellohellohello
是 Python 语言 从 出生就自带的能力 、参考 C 语言而来的。 在 Python 中 不推荐使用该模式 。
string = "我是%s" % "中国人"
string = "我是%10s" % "中国人" # 对格式化的数据 左填充空格 右对齐 补全 10个长度
string = "我是%-10s" % "中国人" # 对格式化的数据 右填充空格 左对齐 补全 10个长度
age = 18
string = "我今年%d岁了" % age
score = 90.55
print("%.1f" % score) # 打印成绩并保留 1位小数
%[(name)][flags][width][.precision]typecode
+
: 在正数的前面补 +-
:配合 width 实现左对齐、默认右对齐0
: 右对齐补0、默认补充空格Python2.6 版本 新增了 format 方法, 使用 {} 进行占位 , 且 大括号中 允许 传入 索引和关键字
string = "名字为{}的学生、性别为{}, 且年龄是{}岁".format(name, sex, age)
string = "名字为{0}的学生、性别是{1},{0}它的年龄是{2}岁".format(name, sex, age)
user = {
"name": "李四",
"age": 20,
"sex": "女"
}
string = "名字为{name:x^10s}的学生、性别是{sex},{name}的年龄是{age:.2f}岁".format(**user)
{exp:<单字符填充值><对齐方式><填充宽度><分隔符,><.精度><类型编码>}
<
: 左对齐>
: 右对齐^
: 居中对齐Python 3.6 版本 新增了 f 模式 ,优化 了 format 方法
语法: f"{exp}"
exp 是一个 python 表达式 ,而非 关键字 、支持 表达式运算,将运算的结果 作为 格式化后的 数据。
user = {
"name": "李四",
"age": 20,
"sex": "女"
}
string = f"名字为{user["name"]}的学生、性别是{user["sex"]},{name}的年龄是{user["age"]}岁"
用法完全参考format模式
如果 单引号, 双引号 ,三引号 冲突的话, 推荐使用 单双引号 嵌套 。也可以使用 \ 对 引号转移。
如果 是 \ 、 例如 \t , \n 等特殊字符 希望 保持 字符串 原意、那么 可以 在 \ 前 在 加一个 \ 进行转移 , 推荐 是在 字符串前加 一个 r
string[0] # 获取 字符串中的第一个字符
string[1: ] # 获取 字符串 除 第一个字符以外 的所有内容
string[1:5] # 获取 字符串中 索引为 1 ~ 5 且不包含 5 的所有内容
string[1:5:2] # 获取 字符串中 索引为 1, 3 的所有内容组成的字符串
string[-1:-4:-1] # 使用 负索引 进行切片
string[::-1] # 反转字符串
string = "abc Hello TEST 1 中国"
# 将字符串全部转大写
print(string.upper())
# 将字符串全部转小写
print(string.lower())
# 将字符串的首字符转大写
print(string.capitalize())
# 将字符串转成标题格式 (每个单词首字母大写)
print(string.title())
# 判断字符串中的所有字母是否是全大写的
print(string.upper().isupper())
print(string.islower())
string = "helllo wlorld!!!"
# 查找 el 在字符串中第一次出现的索引位置
print(string.find("le"))
print(string.rfind("le"))
print(string.index("el"))
print(string.rindex("el"))
# 获取 lo 子串在整个字符串中出现的次数
print(string.count("ll"))
string = "hello"
print(string.ljust(10, "x"))
print(string.rjust(10, "y"))
print(string.center(10, "x"))
print(string.zfill(10))
import base64
base64.b64encode(bytes) # 将一个 字符串流 进行 base64 编码, 返回一个 字符串 流
base64.b64decode(str|bytes) # 将一个 字符串/字符串流 进行 base64 解码、返回一个 解码后的 字符串流
str.encode() : # 将指定的字符串 str 转换成 字符串流
bytes.decode() : # 将 字符串流 转换成 字符串
在UTF-8编码下、一个汉字占用3个字节、在GBK编码下、一个汉字占用2个字节、将2个字节更改为3个字节的规则:
11000011 10110011 ---> 11101100 10001110 10110011