字符串:
一个个字符组成的有序的序列, 是字符的集合
使用单引号双引号三引号引住的字符序列
字符串是不可变对象
字符串可索引可迭代
Python3 起, 字符串就是 Unicode 类型
- # 单引号里面的双引号直接打印, 单引号里面的单引号和特殊字符需要转义才能打印
- " " # 双引号里面的单引号直接打印, 双引号里面的双引号和特殊字符需要转义才能打印
- # 三个单引号里面的单引号和双引号都可以直接打印
- """""" # 三个双引号里面单引号双引号和三个单引号都可以直接打印
r r " " r 里面的特殊字符 (\,\r,\n,\t 等) 均默认直接打印(隐式转义)
如果字符串没有被 r(R)引住, 或者里面的特殊字符没有转义, 则像 \ n\t\r\n\r 这样的特殊字符代表其表意(\n 代表换行), 当作一个字符
字符串 join 链接:
- "string".join(iterable) -> str
- # 将可迭代对象以 string 作为分隔符连接起来返回一个新字符串; 可迭代对象里的元素必须是字符串
- + -> str # 两个字符串相加产生一个新列表
字符串分割:
split 系 # 将字符串按照分割符分割成若干个字符串, 并返回列表
- .split(sep=None,maxsplit=-1) -> list of strings
- # 从左到右; sep 指定分隔符, 默认为空格(相邻的空格当作一个空格处理);maxsplit 指定分割的次数, 默认 - 1 为遍历整个字符串
- .rsplit(sep=None,maxsplit=-1) -> list of strings
- # 从右到左; sep 指定分隔符, 默认为空格(相邻的空格当作一个空格处理);maxsplit 指定分割的次数, 默认 - 1 为遍历整个字符串
- .splitlines([keepends]) -> list of strings # 按照行分隔符切字符串, keepends=true 表示保留行分隔符, 默认不保留 (用 split() 更简单一些)
partition 系 # 将字符串按照分割符分割成头, 分割符, 尾的三元组
- .partition(sep) -> (head,sep,tail)
- # 从左到右, 遇到分隔符就返回头分隔符尾三部分的三元组; 没有找到分隔符, 就返回头两
个空元素的三元组; sep 分割字符串, 必须指定
- .rpartition(sep) -> (head,sep,tail)
- # 从右到左, 遇到分隔符就返回头分隔符尾三部分的三元组; 没有找到分隔符, 就返回两个空元素, 尾的三元组
字符串修改:
- .replace(old,new[,count]) -> str (old 与 new 需要加引号)
- # 字符串中找到匹配并替换成新子串, 返回新字符串
- #count 表示替换几次, 默认全部替换
- .strip([chars]) -> str (字符集需要用引号引起来)
- # 从字符串两端去除指定的字符集 chars 中的所有字符(只要字符串两端包含字符集里任意一个字符就去除)
- # 没有指定, 默认去除两端的空白字符
- lstrip([chars]) -> str # 只从左做开始
- rstrip([chars]) -> str # 只从做右开始
字符串查找 O(n):
- .find(sub[,start[,end]]) -> int (sub 需要用引号引住)
- # 在指定的区间[start, end), 从左至右, 查找子串 sub 找到第一个立刻返回索引, 没找到返回 - 1
- .rfind(sub[,start[,end]]) -> int
- # 在指定的区间[start, end), 从右至左, 查找子串 sub 找到第一个立刻返回索引, 没找到返回 - 1
- index(sub[,start[,end]]) -> int (sub 需要用引号引住, 少用, 可能抛出异常)
- # 在指定的区间[start, end), 从左至右, 查找子串 sub 找到第一个立刻返回索引, 没找到抛出异常 ValueError
- rindex(sub[,start[,end]]) -> int (sub 需要用引号引住, 少用, 可能抛出异常)
- # 在指定的区间[start, end), 从右至左, 查找子串 sub 找到第一个立刻返回索引, 没找到抛出异常 ValueError
- .count(sub[start[,end]]) -int #在指定的区间[start,end), 从左到右统计子串 sub 出现的次数
字符串判断:
- startswith(suffix[,start[,end]]) -> bool # 在指定的区间[start,end), 字符串是否是 suffix 开头
- endswith(suffix[,start[,end]]) -> bool # 在指定的区间[start,end), 字符串是否是 suffix 结尾
is 系列
.isalnum() -> bool 是否是字母和数字组成
.isalpha() 是否是字母
.isdecimal() 是否只包含十进制数字
.isdigit() 是否全部数字(0~9)
.isidentifier() 是不是字母和下划线开头, 其他都是字母数字下划线
.islower() 是否都是小写
.isupper() 是否全部大写
.isspace() 是否只包含空白字符
字符串大小写:
- .upper() # 将字符串全部转为大写
- .lower() # 将字符串全部转为小写
字符串格式化:
format 函数
- {}.format(*args) -> str # 按照索引位置对应打印, 默认一一对应
- {xxx}.format(**kwargs) -> str # 按照字典 key 来打印 value,xxx 代表 key
- : # 大括号中索引与格式化打印模式之间的分隔符
格式化打印模式常用:
- .number #以几位有效数字打印;{:.2}
- .numberf # 打印到小数点后精度 {:.2f} # {:4.2f} 表示打印到小数点 2 位并且总字符串共占 4 个字格
- .number% # 例子:{:.2%}.format(7/9) 输出 77.78%
- <# 左对齐 # {:<10} # 10 表示总共打印占几个字格, 实际字符超出则撑破
- > # 右对齐 # {:>10}
- ^ # 居中对齐 # {:^10}
- *^ # 居中对齐并以 * 填充 # {:*^10}
特殊例子:
1 {0:b},{0:x},{0:c},{0:o}.format(97) 输出 1100001,61,a,141;
0 表示索为 0, 不写 0 会出错
b: 二进制打印; x:16 进制打印; c:ASCII 码打印; o: 八进制打印
- 2>>> import datetime
- >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
- >>> {:%Y-%m-%d %H:%M:%S}.format(d) # 时间修饰
- 2010-07-04 12:15:58
来源: http://www.bubuko.com/infodetail-2546044.html