python数据类型
string
-
python中使用单引号或双引号创建字符串,python中无字符概念,字符就是一个字符的字符串。
-
s[0] 访问字符,只读
-
+ 字符串连接 * 字符串重复
-
in 和 not in 判断字符或字符串是否包含在 目标串 中。
-
‘’’ 或 “”" 定义多行字符串,原样输出
-
关于转义字符,计算机内存中存储时,是不存在的,\n到了内存就是13,这些转义字符只是程序员在代码中定义字符串时使用的。
-
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
在Python3中,所有的字符串都是Unicode字符串。
字符串长度
- len(s)
字符串连接
-
加号 +
-
join
s.join(seq)
seq–列表,元组之类的序列类型。
作用:以s为分割符连接seq的各个元素
字符串分割
-
s.split(str="", num=string.count(str))
若指定了num则s你被分割为num+1个。
num可大于s中str的个数,不会报错,但num无效
-
s.splitline(keepends=false)
按行分割,keepends表示是否保留换行符。
字符串截取
-
切片
s[2:6] (截取子串)
2–起始位置,6–结束位置,包含开头,不含结尾(即“左闭右开”原则)
开头省略默认为0,结尾省略默认为len(s)。
字符串查找
-
s.count(str,beg=0,end=len(s))
在s中,beg与end指定的范围内,查找子串str,返回找到的次数。
-
s.find(str,beg=0,end=len(s)) 【rfind()】
在s的指定范围内,查询str,并返回第一个str所在的位置,未找到时返回-1.
-
s.index(str,beg=0,end=len(s)) 【rindex()】
同find,只不过找不到时会报异常: ValueError: substring not found
字符串替换
-
s.replace(old,new,max)
用new替换s中的old,max指明最多替换次数,默认全部替换
字符串修剪
- s.strip( c=" " ) 删除s左右两侧的空格,或指定字符
- s.lstrip( c=" " ) 删除s左侧的空格,或指定字符
- s.rstrip( c=" " ) 删除s右侧的空格,或指定字符
其他方法
-
s.capitalize() 字符串第一个字符转化为大写
-
s.title() 每个单词首字母大写,其余小写
-
s.lower() 所有大写转小写
-
s.upper()
-
s.swapcase() 大小写转换
-
s.center(width,fillChar=" ")
将字符串s用fillChar指定的字符填充为width指定的长度,s居中。
width小于len(s)时,不会报错,s依然原样输出。
-
s.ljust(width,fillChar=" ")
参数与center相同,s左对齐
-
s.rjust(width,fillChar=" ")
参数与center相同,s右对齐
-
s.zfill(width)
右对齐,前填0
-
s.encode()
-
s.decode()
-
s.expandtabs(tabsize=8) 以tabsize指定的空格数,替换 \t
-
s.translate()
intab = "aeiou" outtab = "12345" trantab = str.maketrans(intab, outtab) # 制作翻译表 str = "this is string example....wow!!!" print(str.translate(trantab))
-
-----------------------------------------查询字符串--------------------------------------
-
s.endswith(str, beg=0, end=len(s))
s的beg至end片段内(左闭右开),是否已str结尾
-
s.startswith(str, beg=0, end=len(s))
s的beg至end片段内(左闭右开),是否已str开头
-
s.isalnum()
当返回真时,s至少有一个字符,且仅由字母或数字组成。
-
s.isalpha()
必须有字符,且全是字母
-
s.isdigit()
必须有字符,且全是数字字符
-
s.isnumeric()
类似于isdigit(),但isnumeric()好像可以包含Unicode数字,如:\u00B2 就是 平方
-
s.isdecimal() 检查字符串是否只包含十进制字符
-
s.islower()
至少包含一个区分大小写的字符,且他们都是小写,(也就是可以由小写字符和不区分大小写的字符组成)
-
s.isupper()
-
s.isspace()
必须有字符,且全是空格
-
s.istitle() 有字符,每个单词首字母大写,其余小写
-
s.max() s.min() 返回字符串中最大或最小的字符,好像没啥子卵用。
字符串格式化
-
使用占位符 %
例:
s = "My name is %s,I am %d years old." % ("Lilei", 12)
其中 %s %d 都是占位符,
-
%s 表明此处应替换为一个字符串(“Lilei”)
-
%d 给定数字,以十进制整数显示,浮点数直接抹去小数部分。
-
%c 给一个字符,或字符的ASCII码,不能给出多个字符,会报错。
-
%o 是 “欧” 不是 ”零“,给定数字以8进制显示
-
%x 以16进制显示 小写 abcde
-
%X 以16进制显示 大写 ABCDE
-
%f 显示浮点数,默认显示6位小数,第六位由第七位 四舍五入(如果有的话)
-
%e 以科学记数法显示数值,同样默认小数点后四舍五入到6位
-
%E 同e,不过E大写 如 :6.355E+07
-
%g %f和%e的简写
-
%G
辅助指令:
-
m 指定长度 %3d 表示当给定数值不够3位时,在数字左侧补空格,使其达到3位,当给定数值大于3位时,指定的长度3无效。
-
.n 指定小数点位数,用于f或e
-
- 表示左对齐 如: %-5d 如需补空格是在右侧补
-
0 表示在数字前面填 0 而非空格,但如果是左对齐,是不会在右侧补0的。
-
+ 正数前面显示 + 号
-
< sp> 正数前面显示空格,用于与负数保持对齐。
-
-
使用f-string
s = f"{x+1}" 字符串前加f,会计算字符串中{}内的表达式,并用结果替换大括号
转义字符
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\’ | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy 代表的字符,例如:\o12 代表换行,其中 o 是字母,不是数字 0。 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
原字符串
- r/R 定义原始字符串,使字符串中转义字符不转义,原理:自动的把字符串中的 \ 替换为 \\
- repr( s ) r/R只能用在引号前面,s可以是引号定义的字面量,也可以是字符串变量