字符串和字符编码unicode

python基础第三天

字符串 str

做用:
用来记录文本(文字)信息,给人类识别用的,为人们提供注释解释说明
表示方式:
在非注释中,凡是用引号括起来的部分都是字符串
' 单引号
" 双引号
''' 三单引号
""" 三双引号
空字符串的字面值表示方法
''
""
'''
"""
单引号和双引号的区别:
  单引号的内的双引号不算结束符
  双引号的内的单引号不算结束符
扩展:由于解释执行器根据单引号为开始符日后找单引号做为结束符,要是双引号为开始符,日后找到双引号结束为止。python


三引号字符串的做用:多行字符串
三引号字符串中的换行会自动转换为换行符
三引号内能够包含单引号和双引号
示例:git

1 s = 'welcome to beijing!\nI like python!\nI am Studing!'
2 print(s)

隐式字符串字面值链接:注意:只用常量值才能够函数

1 s = "I'm a tencher!" 'My name is liuzhihua'
2 >>> s
3 "I'm a tencher!My name is liuzhihua"

若是一个字符串同时包含以下字符该怎么办?
用转义序列表明特殊字符
字符串字面值中,用字符反斜杠(\)
后跟一些字符表明特殊的一个字符
反斜杠转义字符表:
\' 单引号
\" 双引号
\''' 三单引号
\""" 三双引号
\\ 一个反斜杠
\n 换行
\r 返回光标至首行
示例: post

1 >>> print('ABCD\rab')
2 abCD

\t 水平制表符(有的终端默认4空格,有的默认8个空格)
\v 垂直制表符
\f 换页
\b 倒退
\0 空字符,字符值为空
\xXX XX为两位十六进制表示的字符 ASCII编码:ASCII表:$ man ascii
示例:print('\x41','\x42') 输出 A B
经常使用的ASCII编码:(0-127共128个(十进制))
字符 十进制 十六进制
'0' --'9' 48 --57 0x30--0x39
'A' --'Z' 65 --90 0x41--0x5a
'a' --'z' 97 --122 0x61--0x7a网站

 

Unicode

同一编码:分为Unicode16字符和Unicode32字符
\uXXXX XXXX个十六进制表示的Unicode16字符2**16=65536(0-65535)
\UXXXXXXXX 8个X十六进制表示的Unicode32字符2**32
计算机存储文字,是以图片形式保持,用整数返回编码

ascii 编码 美国的信息交换标准码(记录128个英文字符对应的编码)
Unicode (记录65536个文字(包含英文128个ascii编码))
ascii编码和Unicode的区别:
ascii编码:用8个位表示文字,最高位必定为0,低7位表示数值(0-127共128个)
Unicode编码:用16个位组成的(0-65535共65536个)0x0000-0xffff
原始字符串:
r
字符串的比较运算:比较是的编码值
< > <= >= == =!
字符串的运算
+ +=拼接
* *=重复
in / not in 成员检查运算 字符在字符串中返回True,不然返回False
字符串的索引 index(数学含义:下标)
字符串的切片 slice
字符串函数
len(s)
max(s)
min(s)
ord(单个字符) 返回十进制编码值
chr(整数) 返回整数对应的编码值的字符 最大范围110000
python基础第四天正式
字符串的格式化表达式
做用:
生产必定格式的字符串
语法格式:
格式字符串 % 参数值
格式字符串 % (参数值1,参数值2,...)
说明:
格式化字符串%以开头的为占位符,占位符的位置将用参数值替换。
示例:
fmt = 'name:%s,age:%d'
name = 'tarena'
age = 15
s = fmt % (name,age)
格式化字符串的占位符和类型码
%s 字符串 使用str(obj)转为字符串
%r 字符串,使用repr(obj)转为字符串
%c 整数转为字符串,使用chr(i)函数
%d 十进制整数
%o 八进制整数
%x 十六进制整数(字符小写a--f)
%X 十六进制整数 (字符大写A--F)
%e 指数型浮点数(e小写)如:2.9e+4
%E 指数型浮点数(E大写)如:2.9E+4
%f,%F 浮点十进制形式
%g,%G 进制进形式浮点或指数浮点自动转换
%% 等同于一个%字符
格式化字符串的占位符和类型码语句:
%[- + 0 宽度.精度]类型码
- 左对齐
+ 右对齐
0 左侧空白位置补零(只有数字才能够)
宽度:整个数据输出的宽度
精度:保留小数点后多少位,默认6位。
示例:spa

1 '%10d' % 123 #' 123'
2 '%+10d' %123 #' +123'
3 '%-10d' %123 #'123 '
4 '%10s' % 'ABC' #' ABC'
5 '%f' % 3.1415926535 # '3.141592'
6 '%7.2f' % 3.1415926535 # ' 3.14'

序列的概念
字符串就是序列
求序列的长度函数len
len(x) 返回字符串的字符个数code

raw 字符串(原始字符串)
格式:
r'字符串内容'
r"字符串内容"
r'''字符串内容'''
r"""字符串内容"""
做用:
让转义符号\ 无效对象

在Python中,由“r”开头的做用=字符串的原始含义blog

dos = r"c:\news"

“例如r"c:\news",由r开头引发的字符串就是声明了后面引号里的东西是原始字符串,在里面听任何字符都表示该字符的原始含义。

这种方法在作网站设置和网站目录结构的时候很是有用,使用了原始字符串就不须要转义了。”

示例:

1 s = 'C:\newfile\test.py'
2 print(s)
3 print(len(s))
4 
5 s = r'C:\newfile\test.py'
6 print(s)
7 print(len(s))

 

字符串的运算:
+ 加号运算符用于拼接字符串
* 运算符用于生产重复的字符串
示例:

1 s = "ABC" +"DEF" # s = "ABCDEF"
2 s1 = '123' * 3 # s1 = '123123123'

 


注:同类型的数据才能相加,相乘只能和整数相乘

in / not in 运算符

做用:
用于判断某个字符串是否在当前字符串中出现过,若是出现过返回True,不然返回False。
扩展:字符串只要完整在当前字符串出现过就返回True

语法:
对象 in 字符串
示例:
s = 'welcome to tarena'
'to' in s # True
'wei' in s # False
'welc' in s # True
字符串的比较运算
运算符:
> >= < <= == !=
规则:
依次从左到右按编码值进行比较,直到最短字符串结束为止。
比较的它们在计算机内数字编码(ASCII编码),比较出结果就不在比较。
示例:

1 'a' < 'b' #True 
2 'abc' < 'abd' #True 
3 'a' < 'ab' #True 
4 'abc' < 'acb' #False 
5 'a' > '1232443545' #True 
6 'a' > 'ASAADASDAAS' #True

 

字符串的索引操做(index)

 

索引

语法:
字符串[整数表达式]
说明:
Python序列均可以用索引来访问序列中的对象
Python 序列的正向索引是从0开始第二个索引是1,最后一个索引是len(s)-1.
Python 序列的反向索引最后是-1,倒数第二个索引是-2,第一个一个索引是-len(s).

切片(slice)

做用:
从一个字符串序列中取出相应元素从新组成一个字符串序列
语法:
字符串[(开始索引b):(结束索引e)(:(步长))]
注:小括号()括起的部分表明能够省略
说明:
1.开始索引是切片开始切下的位置,0表明第一个元素,1表明第二元素,-1表明最后一个元素
2.结束索引是切片的终止索引(但不包含终止点)
3.步长是切片每次获取完当前元素后移动的方向和偏移量。没有步长,至关于取值完成后向右移动一个索引位置
(步长默认是1)。
3.1.当步长为正数时,取正向切片:
开始索引为0,结束索引默认为len(s)
3.2.当步长为负数时,取反向切片:
默认的起始位置是最后一个元素,终止位置是第一个元素的前一个位置。

 

python字符串格式化符号

    符   号 描述
      %c  格式化字符及其ASCII码
      %s  格式化字符串
      %d  格式化整数
      %u  格式化无符号整型
      %o  格式化无符号八进制数
      %x  格式化无符号十六进制数
      %X  格式化无符号十六进制数(大写)
      %f  格式化浮点数字,可指定小数点后的精度
      %e  用科学计数法格式化浮点数
      %E  做用同%e,用科学计数法格式化浮点数
      %g  根据值的大小决定使用%f活%e
      %G  做用同%g,根据值的大小决定使用%f活%e
      %p  用十六进制数格式化变量的地址

格式化操做符辅助指令:

符号 功能
* 定义宽度或者小数点精度
- 用作左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'仍是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(若是可用的话)

Python转义字符

在须要在字符中使用特殊字符时,python用反斜杠(\)转义字符。以下表:

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy表明的字符,例如:\o12表明换行
\xyy 十进制数yy表明的字符,例如:\x0a表明换行
\other 其它的字符以普通格式输出

 

 函数

python3中经常使用与序列的函数
len(x) 返回序列的长度
max(x) 返回序列的最大值
min(x) 返回序列的最小值
示例:

1 s = 'hello'
2 len(s) >>> 5
3 max(s) >>> 'o'
4 min(s) >>> 'e'

字符串编码转换函数:
ord(c) 返回一个字符的Unicode值

1 >>> ord("")
2 23435
3 >>> ord("")
4 32418

chr(i) 返回这个整数值所对应的字符
整数转字符串函数
bin(i) 把整数转换给二进制字符串
oct(i) 把整数转换给八进制字符串
hex(i) 把整数转换给十六进制字符串
字符串构造函数:
str(obj = '') 将对象转换为字符串
示意:
'123' + 456 # 出错,不合法
str(True) #'True'
str(None) #'None'
str(3.14) #'3.14'
经常使用的字符串方法(method):
语法:
对象名.方法(方法传参)
示例:s = 'abc'
s.alpha()
文档参见:
isdigit() :判断所有是否为数字,所有为数字则返回True,不然返回False。
isalpha() :判断所有是否为字母,所有为字母则返回True,不然返回False。
isupper() :判断字母否是所有为大写,是则返回True,不然返回False。
islower() :判断字母否是所有为小写,是则返回True,不然返回False。
count(s,start,end) :返回子串在字符串个数,开始和结束位置能够不选择
find(s,start,end) :返回子串在字符中索引的位置,没有找到则返回-1
upper() :把字符串的字母所有转化为大写
lower() :把字符串的字母所有转化为小写
strip() :删除字符串左右两边的空格
lstrip() :删除字符串右两边的空格
rstrip() :删除字符串左两边的空格
startswith(s,start,end) :检查开始的字符是否
endswith(s,start,end) :检查结束的字符是否
center(number,[fill]) :把字符按照输入的数字空格排放在中心,其余的地方填充
replace(old,new,count) :

练习:
1.输入一个字符串用变量s绑定
  1.1判断你输入的字符串有几个空格
  1.2讲原字符串的左右空白字去掉,打印出剩余的字符个数
  1.3判断你输入的是否数字
  1.4若是是数字,判断这个数字是否大于100.
2.输入三行文字,让这三行文字在一个方框内居中显示:
如输入:
hello!
I'm studing python
I like python
显示以下:
+----------------------------+
| hello! |
| I'm studing python |
| I like python |
+----------------------------+
注意:请不要输入中文

 1 #符串work.py
 2 #1.写一个程序,输入一段字符串,若是字符串不为空,把第一个字符的编码值打印出;
 3 #2.写一个程序,输入整数值(0--65535),打印出这个数值对应的字符。
 4 while True:
 5 
 6     s = input('请输入:')
 7     if s == '':
 8         print('你输入的是空的字符串')
 9     else:
10         print(s,'这个字符串第一个字符的编码值是',ord(s[0]))
11     i = int(input('请输入0至65535之间的一个整数:'))
12     print(i,"这个整数对应的字符是",chr(i))
13     choice = input("输入0退出,按其余继续输入")
14     if choice == '0':
15             break
 1 #字符串.py
 2 #输入一个字符串,把字符串的第一个字符和最后一个字符去掉,打印出处理的结果。
 3 #输入任意字符串,判断这个字符串是否回文:回文示例:上海自来水来自海上
 4 while True:
 5     s = input("请输入:")
 6     print('原来字符串:',s,"去掉第一和最后一个字符的处理结果:",s[1:-1])
 7     #l=len(s)//2
 8     #if s[0:l+1] == s[-1:-(l+2):-1]: #拿先后半段来对比
 9     if s == s[::-1]: #直接反向排序来对比
10         print(s,'是回文')
11     else:
12         print(s,'不是回文')
13     choice = input('输入0退出,按其余继续输入:')
14     if choice == '0':
15         break
 1 # 1.输入一个字符串用变量s绑定
 2 #         1.1判断你输入的字符串有几个空格
 3 #         1.2将原字符串的左右空白字去掉,打印出剩余的字符个数
 4 #         1.3判断你输入的是否数字
 5 #         1.4若是是数字,判断这个数字是否大于100.
 6 while True:
 7     s = input('请输入:')
 8     space = s.count(' ')
 9     s1 = s.replace(' ','')
10     l = len(s1)
11     print(s,"你输入的字符串有",space,'空格')
12     print('去掉',space,'空格后','剩余的字符个数:',l)
13     if s.isdigit():
14         if int(s) <= 100:
15             print(int(s),'小于等于100')
16         else:
17             print(int(s),'大于100')
18     else:
19         print(s,'不是一个纯数字字符串')
20     choice = input("按0退出,按其余请继续输入")
21     if choice == '0':
22         break
 1 # 2.输入三行文字,让这三行文字在一个方框内居中显示:
 2 #         如输入:
 3 #             hello!
 4 #             I'm studing python
 5 #             I like python
 6 #         显示以下:
 7 #         +----------------------------+
 8 #         |           hello!           |
 9 #         |     I'm studing python     |
10 #         |       I like python        |
11 #         +----------------------------+
12 #         注意:请不要输入中文
13 while True:
14     s = input('请输入')
15     s1 = input('请输入')
16     s2 = input('请输入')
17     print('+'+'-'*30+'+')
18     print('|'+s.center(30)+'|')
19     print('|'+s1.center(30)+'|')
20     print('|'+s2.center(30)+'|')
21     print('+'+'-'*30+'+')
22     print('='*(lenght+4))
23     #方法2
24     lenght = max(len(s),len(s1),len(s2))#来控制宽度
25     print('+'+'-'*(lenght+2)+'+')
26     print('|'+s.center(lenght+2)+'|')
27     print('|'+s1.center(lenght+2)+'|')
28     print('|'+s2.center(lenght+2)+'|')
29     print('+'+'-'*(lenght+2)+'+')
30     choice = input("按0退出,按其余请继续输入")
31     if choice == '0':
32         break