Day3—字符串
题外:计算机的数据存储
计算机在存储数据的时候,都是以二进制的形式存储在计算机中的。并且数据存储时,存的是一个数的“补码”。原码, 反码, 补码是计算机存储一个具体数字的编码方式。
- 原码
正数的原码:符号位的值是0,后面是数值的大小。
负数的原码:符号位的值是1。
例如:
需储存的数(十进制) | 转换为二进制 | 源码表示 |
---|---|---|
10 | 1010 | 00001010 |
-10 | ~ | 10001010 |
- 反码
正数的反码:符号位的值是0,后面是数值的大小。
负数的反码:符号不变,后面的每一位的值相比较正数取反(即0→1,1→0)。
例如:
需储存的数(十进制) | 转换为二进制 | 源码表示 |
---|---|---|
10 | 1010 | 00001010 |
-10 | ~ | 11110101 |
- 补码
正数的补码:符号位的值是0,后面是数值的大小。
负数的补码:反码值+1。
例如:
需储存的数(十进制) | 转换为二进制 | 源码表示 |
---|---|---|
10 | 1010 | 00001010 |
-10 | ~ | 11110110 |
1 认识字符串
1.1 什么是字符串
- a.用单引号或者双引号括起来的字符集就是字符串。
- b.字符串中每个独立的单元我们叫字符,例如字符串'ab12'中的'a'、'b'、'1'、'2'就是字符。
1.2 转义字符
即通过“\”号将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符。
说明:python中没有字符类型,如果要表示字符,就是用长度为1的字符串表示。
常见的几种转义符:\n(换行)、\t(制表符--Tab)、\r(回车)、\f(换页)等等;
其它还有反斜杠号(\)、单引号(')、双引号(")在前面加上反斜杠号即可在字符串中原样显示。
1.3 Unicode编码
- Python中字符的编码采用的是Unicode编码。
- Unicode采用两个字节对一个字符进行编码(),能够将世界上所有符号编码。
- Unicode编码包含了ASCII码。
将字符串转换成指定的数值,这个过程就是编码(编码的目的是方便计算机储存);将数值转换成对应的符号的过程就是反编码。
# 转换
# 1)将Unicode码转换成字符:chr(编码)
print(chr(0x4e03))
# 2)将字符转换成Unicode编码:ord(字符),其结果为十进制
print(hex(ord('曾'))) # hex()将十进制转换成十六进制
执行以上代码,输出结果为:
七
0x66fe
2 获取字符串
字符串实质可以看成是一个不可变的序列,序列的内容就是字符。一旦字符确定,那么里面的字符和字符的位置就不可变了。
2.1 获取单个字符
python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]
说明:
- a.字符串可以是字符串值,也可以是字符串变量
- b.[]:中括号是固定语法
- c.索引:从0开始到字符串长度减1。-1 ~ -长度(-1对应的是最后一个字符,-2对应倒数第二个字符)。索引不能越界,否则会报错(产生异常)。
示例代码:
str1 = 'abcd'
print(str1[0])
print(str1[-1])
执行以上代码,输出结果为:
a
d
2.2 获取部分字符(获取字串)——切片操作
- 操作格式:“字符串[索引值1:索引值2]”:从索引值1开始获取,获取到索引值2前的所有字符。切片时索引值2可以越界,越界的时候就取临界值。
示例代码:
str1 = 'abcd'
str2 = 'hello python'
print(str1[0:-2])
print(str1[-2:-1])
print(str2[0:4])
执行以上代码,输出结果为:
ab
c
hell
- 操作格式:字符串[索引值1:索引值2:步进]: 从索引值1开始获取,每次索引值增加步进值,每增加一个次取一个字符,知道取到索引值2前为止。
注意:a.步进如果是正数,那么索引值1对应的字符位置一定要在索引值2对应位置的前面; 步进如果是负数,那么索引值1对应的字符位置一定要在索引值2对应位置的后面。
b.索引值2对应的字符是取不到的。
示例代码:
str3 = 'helloPython'
print(str3[0:5:2])
print(str3[-1:-5:-1])
执行以上代码,输出结果为:
hlo
noht
- 索引值的省略
切片的时候,索引值1和索引值2是可以省略的
- 索引值1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是字符串的最后一个字符)
- 索引值2省略:从索引值1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是字符串的第一个字符)
示例代码:
str5 = "123456789"
print(str5[::])
print(str5[1::])
print(str5[:2:])
print(str5[::3])
执行以上代码,输出结果为:
123456789
23456789
12
147
3 字符串的运算
3.1 字符串的“+”
字符串+字符串:python支持两个字符串相加,其效果就是将两个字符串拼接在一起,产生一个新的字符串。
示例代码:
print('abc'+'123')
输出结果:
abc123
3.2 字符串的“*”
操作格式:字符串“*”整数(也就是字符串重复多次)。
示例代码:
print('123'*3)
输出结果:
123123123
3.3 支持所有比较运算符
- a.让str1中的每一位字符,分别同str2中每一位字符依次比较。直到不同为止,再看不同字符中谁的编码值大或者小。
- b.其比较结果都是布尔值。
示例代码:
str1 = 'abcd'
str2 = 'ac'
str3 = 'fgh'
print(str1 > str2)
print(str1 > str3)
print(str2 > str3)
输出结果:
'False'
'False'
'False'
3.4 in和 not in
str1 in str2:判断str1是否在str2中(str2是否包含str1/str1是否是str2的子串),结果是布尔值。
示例代码:
print('abc' in 'a1b2cdef')
print('f' not in 'python')
输出结果:
'False'
'True'
3.5 获取字符串长度
字符串的长度,指的是字符串中字符的个数。通常用内置函数len()来获取字符串长度
示例代码:
str1 = 'project'
print(len(str3),len('abc 1\\2'))
输出结果:
7 7
3.6 阻止转义
在字符串的最前面添加r或者R可以阻止转义
示例代码:
print('a\nb')
print(r'a\nb')
输出结果:
a
b
a\nb
4 格式化字符串
表示格式为:带格式的字符串%(格式符对应的值)
说明:%是固定格式;()也是固定格式。带格式符的字符串中有几个格式符,那么后面的括号中就必须有几个和它一一对应的值。
- 以下是常见的几种格式化字符串符号:
符号 | 描述 |
---|---|
%s | 格式化字符串 |
%d | 格式化整数 |
%f | 格式化浮点数(%.nf为保留小数点后n位小数) |
%c | 格式化字符(可以将数字转换成字符拼接到字符串中) |
示例代码如下:
# Hello,xxxx!今年xx岁
first_name = 'zhang'
last_name = 'san'
age = 28
print('Hello,%s%s!今年%d岁' % (first_name,last_name,age))
# 金额是:xx.xx元
money = 999
print('金额是:%.2f元' % (money))
执行以下代码,输出结果为:
Hello,zhangsan!今年28岁
金额是:999.00元
5 字符串相关方法
python为字符串提供了很多的内建函数,使用方法为:“字符串.函数()”。
注意:这些所有的函数功能都不会影响原来的字符串,而是产生一个新的字符串。
-
下表为部分常见的内建函数:
(完整版请参考:http://www.runoob.com/python3/python3-string.html)
方法 | 描述 |
---|---|
capitalize | 将字符串的第一个字符转换为大写 |
center(width,fillchar) | 返回一个指定的宽度width居中的字符串,fillchar 为填充的字符,默认为空格。 |
count(str,start=0,end=len(string)) | 返回 str 在 string 里面出现的次数,star为字符串开始搜索的位置,end为字符串中结束搜索的位置 |
expandtabs(tabsize=8) | 把字符串中的 tab 符号('\t')转为空格,tabsize为指定转换字符串中的 tab 符号('\t')转为空格的字符数,默认空格数是8 |
find(str,start=0,end=len(string) | 检测字符串中是否包含子字符串 str ,如果指定 start(开始)和 end(结束)范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1 |
indx(str,start=0,end=len(string) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常 |
上一篇: java第二十八课时
下一篇: day3标识符关键字