2018-08-22 day3

第一节

1.什么是字符串

1.1 在python中,用'...'或"..."括起来的字符集就是字符串

print('bnzvx123~~,,¥%……&***中文')

输出:bnzvx123~~,,¥%……&***中文

1.2字符串中的每一个独立的单元我们叫做字符
     例如:字符串'abc123'中的'a''b''c''1''2''3'就是字符
name='王宇'   
poem='对酒当歌,人生几何'

2.转义字符

说明:python中没有字符类型,如果要表示字符,就用一个长度是1的字符串表示
字符串长度:指的是字符串中字符的个数,
例如:'abc'--长度为3
"a-b c'"的长度为6

2.1通过" \ "将一些特殊的字符转换成一个具有特殊功能或特殊意义的字符就是转义字符

2.1.1常见的转义字符

\n ---换行
\t ---制表符(相当于Tab键)
\ ---打印一个
" ---打印一个双引号

poem1="窗前明月光,\n疑似地上霜\n"
poem2="窗前明月光,\t疑似地上霜\n"
poem3="窗前明月光,\n\t疑似地上霜"
print(poem1,poem2,poem3)

输出:
image.png

str1='abc\bcd'
str2='abc\\bcd'
str3='abc\"'
print(str1,'\n',str2,str3,'sep\n')

2.1.2在计算字符串长度的时候,转义字符的长度为1

3.Unicode编码(字符在计算机内存中的保存形式)

python中的字符的编码采用的是Unicode编码

  • a.将字符转换成指定的数值,这个过程就是编码。(编码的目的
    就是方便计算机存储)
  • b.将数值转换成对应的符号(字符)的过程就是反编码(解码)
  • c.常见的有ASCII码表和Unicode码表
    (1)ASCII码表只能对127个字符进行编码(适用于美国,中文就没办法编码)
    (2)Unicode编码表:对ASCII码表进行扩充(适用于各个国家),是采用两个字节对一个字符进行编码(2**15个),能够对世界上所有字符进行编码。(Unicode编码包含了ASCII码)

"""

3.1将Unicode码转换成字符:函数 chr(编码)

print(chr(0xA001))   #输出:ꀁ
print(chr(0xAC00))   #输出:가
print(chr(0x4e60))   #输出:习
print(chr(0x4936))   #输出:䤶

3.2将字符转换成Unicode编码:ord(字符)

code1=ord("王")   #获取的结果是10进制的
code2=ord("龙") 
print(hex(code1),hex(code2))  #输出0x738b  0x9f99

第二节 获取字符

      字符串实质可以看成是一个不可变的序列,序列内容是字符。一旦字符串确定,那么里面的字符和字符位置是不可变的

1.怎么获取单个字符

python中的字符串,可以通过下标(索引)来获取指定位置上
格式:字符:字符串[索引]
说明:
(1).字符串:可以是字符值,也可以是字符串变量
(2).[]:国定语法
(3).索引范围:从0开始到字符串长度减1;或从-1到负的长度(但-1对应的的是最后一个字符,-2对应倒数第二个)

print(str1[0],str1[1],str1[2])  #输出abc
print(str1[-4],str1[-3],str1[-2])   #输出abc
# 若 print(str1[4])  --->会报错,索引不能越界

2.获取部分字符(获取子串)--切片

格式:字符串[下标1:下标2]

2.1 从下标1开始获取到下标2前的所有字符

注意:字符串下标从左到右,从0开始 或 从右到左从-1开始),使用时要保证下标1对应的字符在下标2对应的字符之前。

str2='hello world'
print(str2[0:4])    #hell
print(str2[2:7])    #llo w
print(str2[2:-1])   #llo worl
print(str2[2:12])  # 切片时下标可以越界,越界时取临界值

2.2 字符串[下标1:下标2:步进]:

  • 从下标1开始获取,每次下标值增加一个步进值
  • 每增加一次取一个对应字符,一直取到下标2之前
  • 步进为正数,那么取值顺序从左到右,那么下标1必须在下标1前面(左边)
  • 步进为负数,那么取值顺序从右到左,那么下标1必须在下标2后面(右边)
  • 注意:无论怎么取,下标2对应的字符永远是取不到的
str3='abcdefghijklmnopqrstuvwxyz'
print(str3[0:19:5])
print(str3[-1:0:-1])

2.3切片的时候,下标1和下标2是可以省略的

str4='good student day day up'
print(str4[:4:1])
print(str4[:4:-1])
print(str4[1::1])
print(str4[0::-1])
  • 下标1省略:默认从开头开始步进为正,开头为第一个字符,步进为负,开头从最后一个字符开始(没有下标2取不到的限制)
  • 下标2省略:默认获取到最后,步进为正,时最后为最后一个字符, 为负,最后为第一个字符(没有下标2取不到的限制)
  • 两个都省略:步进为正则从第一个获取到最后一个,为负则相反

题目:获取一个字符串中的所有下标为奇数位上的字符(位数从0开始)

str5='qwertyuioasdfghj'
print(str5[1::2])

第三节 字符串的相关运算

1.字符串的加法运算
python支持两个字符串相加,其效果就是将两个字符串拼接在一起产生一个新的字符串
注意:如果+的一边是字符串,则另一边也必须是字符串

str1='hello'+'world'
str2=' '
print(str1,str2,str1+str2)

2.字符串的乘法运算

格式:**字符串 * 整数**
效果:字符串重复多次
print(str1*3)   #  输出helloworldhelloworldhelloworld

3.比较运算:所有的比较运算,结果为布尔类型值

注意:大小相比时,两个字符串同一下标位上的Unicode编码依次相比,直到不同位置

print('abc'>'ac') 
  • 因为'c'的Unicode编码值大于'b'Unicode编码值,就可判断结果为flase

4.in 和 not in

格式:str1 in str2:判断str1是否在str2中或str1是否是str2的子串,结果是布尔值!

print('abc'in 'abcdef')   #输出 True

5.获取字符串的长度

  • 字符串的长度指的是字符串中字符的个数,字符串的长度可以为0,即空串
  • len() ---内置函数,字符串的长度
str3='asdfghqwertuzxc'
str4='    '
str5=''  #空串
print(len(str3),len(str4),len(str5))

6阻止转义

  • 在字符串的的最前面添加r或R可以阻止转义
print('a\nb')
print(r'a\nb')  #输出a\nb
print('a\\nb')  #输出a\nb
print(len('a\\nb'))  #输出4

你可能感兴趣的:(2018-08-22 day3)