1、字符编码
一个字节8个比特位(bit)
(1)、ASCII---美国,ASCII占用一个字节
字符串 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
(2)、GB2312--简体中文
big--繁体中文,一个中文字符占用3个字节,各国有各国的标准,就会出现不可避免的冲突,结果就是在多种语言混合的 文本分钟,会显示出乱码。
(3)、Unicode--统一码、万国码
使用16或32位的十六进制字面值(分别加上\u或\U)或者使用字符的Unicode字符名称(\N{name})
(每国语言的每个字符 设定统一并且唯一的二进制编码),
\uxxxx 16位(bit)-2字节Unicode编码 \Uxxxxxxxx 32位python字符串默认使用Unicode编码表示文本,
Ubicode编码通常是2个字节,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。(4)、UTF-8编码 UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间: 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。 用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:
十进制:2;45;94641
八进制:0o177(127);0o11(9)
十六进制:0x11(17);0xFF (255);
二进制:0b111;0b101
2、函数的使用
1、python的字符串是不可以改变的字符序列
1、a,b = 1,2 #交叉赋值,所以交换a,b的数据不需要再创建一个变量
3、is / is not 判断两个对象是否是同一个对象,如果是返回True,否则返回False
3、in / not in 判断字符串是否在,返回True or False
3、字符串的切片 字符串序列[(开始索引a):(结束索引b)(:(步长s))] #不包括结束索引b
3、print(1,2,3,end=''), end:输出完毕后在末尾自动追加一个字符串,print()中默认end=('/n')所以print函数会换行,我们用end=' '可以让结果的结尾避免换行,通常用来避免不同print之间的换行
3、print(1,2,3,sep='*'), sep:分隔号*,往可迭代对象中插入分隔符
1 print(1,2,3,sep = "*") #1*2*32 print("我爱","我自己",sep="*") #我爱*我自己
3、id(ibj) 返回一个对象在内存中的地址
2、del 变量名; 删除变量,删除与对象的关联关系,可能释放对象
2、bool(obj)返回Ture 或者 Flase
3、len(x) 求序列的长度
3、abs(x)绝对值
3、pass 通常用来避免空白,pass语句通常称之为空语句
3、None 空值 用来占位;用来解除变量;常见的空值有 0, 0.0, 0j, ''空字符串,[]空列表,()空元组,{}空字典
3、运算符 +; -; *; /; //地板除,结果去除小数取整; **幂运算;%求余
4、round(number,ndigits=0)对number进行四舍五入,ndigits是小数点向右取整的位数,负数表示先左取整的位数
5、pow(x,t,z)相当于x**y或者x**y%z
1、complex(a,b)可以用数字创建一个复数 (a+bj)
6、help(函数)函数查看文档
7、%占位符 print("我叫%s,年龄%d"%("LXP-Never",23))
8、input() 以'字符串'的形式获取用户输入
3、list() 创建空列表或L = [] list(range()) 用可迭代对象创建一个列表
9、help('_main_') 在交互模式在查看当前作用域的所有变量 退出键:q
9、str() 字符串构造函数
str(123)#结果#‘123’
10、原始字符串
作用:原始字符串能够让字符串中的每一个字符都保持原样,让转义字符\无效,但是原始字符串不能以单个反斜杠结尾
格式:r'字符串内容'
但是如果字符串最后一个就是\,该如何显示呢?下面的代码会给出答案
1 #Author:凌逆战 2 s = 'C:\newfile\test.py' 3 print(s) 4 #C: 5 #ewfile est.py 6 print(len(s)) # 16 7 s = r'C:\newfile\test.py' 8 print(s) # C:\newfile\test.py 9 print(len(s)) # 1810 11 print(r'C:\Program Files\foo\bar' '\\') # C:\Program Files\foo\bar\
10、字符串编码转换成数字:
ord(alphabet) 返回一个字符的ASCII值或者Unicode值
chr(number) 返回i(0~255内)这个整数值所对应的字符,i可以是十进制,也可以是十六进制0x.
整数转换成字符串函数:
bin() 将整数转换成二进制字符串
orc() 将整数转换成八进制字符串
hex() 将整数转换成十六进制字符串
1、转义字符:
\' 单引号(')
\" 双引号(") \\ 一个反斜杠 \n 换行 \r 返回光标至行首 \t 水平制表符 \v 垂直制表符 \f 换页 \b 倒退 \0 空字符,字符值为零 \xXX XX为两位十六进制表示的字符 \uXXXX XXXX为四个十六进制表示的Unicode16字符 \UXXXXXXXX 8个十六进制表示的Unicode32字符这些转义字符要在" "字符串中打印
3、字符串format函数的使用
from math import *print("hello,%s"%('凌逆战')) # hello,凌逆战print('{},{},{}'.format("孙悟空", '猪八戒', '沙悟净')) # 孙悟空,猪八戒,沙悟净print('{0},{1},{2}'.format("孙悟空", '猪八戒', '沙悟净')) # 孙悟空,猪八戒,沙悟净print('{1},{0},{2}'.format("孙悟空", '猪八戒', '沙悟净')) # 猪八戒,孙悟空,沙悟净print('{1},{0},{2},{0}'.format("孙悟空", '猪八戒', '沙悟净')) # 猪八戒,孙悟空,沙悟净,孙悟空# 命名参数和未命名参数混合使用print("{foo} {} {bar} {}".format(1, 2, bar=4, foo=3)) # 3 1 4 2print("{foo} {1} {bar} {0}".format(1, 2, bar=4, foo=3)) # 3 2 4 1# 精度print('{name}的值是 {value}'.format(value=pi, name='π')) # π的值是 3.141592653589793print('{name}的值是 {value:.2f}'.format(value=pi, name='π')) # π的值是 3.14,如果不.2f,默认保留6位,# 将数字作为浮点数进行处理#字符串格式设置print("{num:b}".format(num=42)) # 101010 # 将数字作为二进制数进行处理print("{num:c}".format(num=65)) # A # 将整数转换成Unicode编码print("{num:d}".format(num=65)) # 65 # 十进制print("{num:e}".format(num=65)) # 6.500000e+01 # 科学计数法print("{num:.2%}".format(num=0.65)) # 65.00% # *100百分号表示# 宽度print("{num:10}".format(num=3)) # 3 # 宽度10,数字右对齐print("{name:10}".format(name="Bob")) # Bob # 宽度10,字符串左对齐print("{pi:10.2f}".format(pi=pi)) # 3.14 # .号左边是宽度,右边是精度print("{:.5}".format("Guido van Rossum")) # Guido # 也可指定其他类型的精度print('One googol is {:,}'.format(100000)) # One googol is 100,000 # 千位分隔符# print(f'e的值为{e}') # 在python 3.6中 e的值为2.787948764# 下述三个标志(s、r和a)指定分别使用str、repr和ascii进行转换print("{pi!s} {pi!r} {pi!a}".format(pi="π")) # π 'π' '\u03c0'
1、符号、对齐、填充
在指定的宽度和精度前面可以添加一个标志,标志可以是
零、加号、减号、空格填充字符串
默认的填充是空格,但也能使用填充字符$来填充
1 print('{:010.2f}'.format(pi)) # 0000003.142 print('{:+10.2f}'.format(pi)) # +3.143 print('{:-10.2f}'.format(pi)) # 3.144 print('{: 10.2f}'.format(pi)) # 3.145 print('{:$^10.2f}'.format(pi)) # $$$3.14$$$
左对齐、右对齐和居中,分别使用<、>和^
1 print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(pi))2 # 3.14 3 # 3.14 4 # 3.14
4、字符串的方法
对象.方法(方法传参)
假设字符串的变量名为s
方法 | 说明 |
---|---|
'+'.join('1234') | 将字符串'+'插入含字符串的可迭代对象(列表、元组、字符串),返回字符串 1+2+3+4 |
'1+2+3+4'.split('+') | 将字符串按指定字符拆分,返回列表 ['1', '2', '3', '4'] |
S.isdigit() | 判断字符串中的字符是否全为数字 |
S.isalpha() | 判断字符串是否全为英文字母 |
S.islower() | 判断字符串所有字符是否全为小写英文字母 |
S.lower() | 生成将英文转换为小写的字符串 |
S.isupper() | 判断字符串所有字符是否全为大写英文字母 |
S.upper() | 生成将英文转换为大写的字符串 |
S.isspace() | 判断字符串是否全为空白字符 |
S.center(width[,fill]) | 将原字符串居中,width是字符串的总宽度,fill是填充字符,默认是空格 |
S.count(sub[, start[,end]]) | 获取一个字符在字符串中的个数 |
S.find(sub[, start[,end]]) | 获取字符串中子串sub的索引,失败返回-1 |
S.index(sub) | 返回一个字符在字符串中的索引,若没有,会报一个异常 |
S.strip() | 返回去掉左右空白字符的字符串 |
'*** SPM * eve!!! ***'.strip(' *!') | 能删除字符串左右两边的指定字符。 # SPM * eve |
S.lstrip() / S.rstrip() | 返回去掉左侧空白字符的字符串 / 返回去掉右侧空白字符的字符串 |
S.replace(old, new[, count]) | 将原字符串的old用new代替,生成一个新的字符串 |
S.startswith(prefix[, start[, end]]) | 返回S是否是以prefix开头,如果以prefix开头返回True,否则返回False, |
S.endswith(suffix[, start[, end]]) | 返回S是否是以suffix结尾,如果以suffix结尾返回True,否则返回False |
以下是不常用的 |
|
S.title() | 生成每个英文单词的首字母大写字符串 |
S.isnumeric() | 判断字符串是否全为数字字符 |
1、注释:单行注释#,多行注释''' '''或者""" """。
三单/双引号还可用于打印多行内容,x = ''' '''。
2、range()函数 用来创建一个生成一系列整数的可迭代对象(整数序列生成器),range函数的返回值可用于for语句来一次迭代输出整数,生成的是数字序列
range(start,stop) 从start开始,到stop,但是不包括stop,可以取步长
3、列表可以嵌套列表 L = [1, 2, [3.1, 3.2, 3.3], 4]
列表会把字符串分开来, L = list("hello") # L = ['h', 'e', 'l', 'l', 'o']
列表可以用运算符(+ - * )进行拼接、重复
4、重复要做的事放在循环内
5、for 循环中else 语句,是执行完for语句之后,再执行else中的代码
6、str和repr。str能够转换成用户能看懂的字符串;repr能够获得合法的python表达式
1 print(repr("Hello,\nWorld"))2 # 'Hello,\nWorld'3 print(str('Hello,\nWorld'))4 # Hello,5 # World
复习:
方法一: if not name: # 如果name有值则为真,not name 就是假,那么如果name是空,那么就是假,not name 就是真
break 方法二: if name == ' ': #如果名字为空,结束输入操作, break