字符串和字符编码unicode

python基础第三天

字符串 str

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


三引号字符串的作用:多行字符串
三引号字符串中的换行会自动转换为换行符
三引号内可以包含单引号和双引号
示例:

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 返回光标至首行
示例:

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
计算机存储文字,是以图片形式保持,用整数返回
序列的概念
字符串就是序列
求序列的长度函数len
len(x) 返回字符串的字符个数

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

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

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
dos = r"c:\news"

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

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

猜你喜欢

转载自www.cnblogs.com/Alan-Song/p/9614197.html