day03_python _字符串

01-认识字符串

1.什么是字符串

a.用单引号或者双引号括起来的字符集就是字符串:'ah3~!*组', "a k987"

b.字符串中的每个独立的单元我们叫字符
例如:字符串'abc123'中'a','b','c','1','2','3'就是字符

2.转义字符

说明:python中没有字符类型,如果要表示字符,就是用一个长度是1的字符串表示,例如:'a','1',

长度:指的就是字符串中字符的个数,
例如:'abc' - 长度是3 ,'abc123, 你好'-长度是:10

通过\将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符,就是转义字符。
常见的转义字符:

\n --- 换行
\t --- 制表符(相当于tab键)
\\ --- \
\' --- '
\" --- "

注意:在计算字符串长度的时候,转义字符的长度是1。

例如:
poem='床前明月光,\t疑是地上霜\n' 
print(poem)   #床前明月光,   疑是地上霜
str1 = 'abc\\sc\'\''d'  
print(str1)   #abc\s'c"d

3.Unicode编码

a.python中字符的编码采用的是Unicode编码
b.Unicode是采用两个字节对一个字符进行编码(2^15),能够将世界上所有的符号进行编码
c.Unicode编码中包含了ascii码
d.将字符转换成指定的数值,这个过程就是编码。(编码的目的是方便计算机存储)
e.将数值转换成对应的符号的过程就是反编码(解码)

1).将Unicode码转换成字符: chr(编码)

print(chr(0xA001))
print(chr(0xAC00))
print(chr(0x4e60))

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

ode1 = ord('龙')  # 结果是10进制的
code2 = ord('汉')
print(hex(code1), hex(code2)) #0x9f99 0x6c49

02-获取字符

字符串实质可以是一个不可变的序列,序列内容是字符。
一旦字符串确定,那么里面的字符和字符的位置就不可变了,例如:'abc'

1.怎么获取单个字符

python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]
说明:
a.字符串:可以是字符串值,也可以是字符串变量
b.[]: 中括号使固定语法
c.索引:从0开始到字符串长度减1 (0对应第一个字符);
-1 ~ -长度(-1对应的是最后一个字符, -2对应的是倒数第2个字符)

注意:索引不能越界,否则会报错(产生异常)

str1 = 'acbd' # a->0, c->1, b->2, d->3
print(str1[0])  # a
print(str1[4])  # IndexError: string index out of range
name = '王海飞'
print(name[1])  #  王
print(name[-1], name[-2], name[-3]) #飞 海 王
print('abc'[2]) #  c
print(name[-4]) # IndexError: string index out of range

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

字符串[下标1:下标2] :
从下标1开始,获取到下标2前的所有的字符
(从下标1开始,每次下标值加1,一直加到下标2前)
注意:下标1对应的位置,一定要在下标2对应的位置前

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

字符串[下标1:下标2:步进]:
从下标1开始获取,每次下标值增加步进值,没增加一次取一个字符,直到取到下标2前为止。
注意:
a.步进如果是正数,那么下标1对应的字符的位置一定要下标2对应的位置的前面; 步进是负数,那么下标1对应的位置一定要在下标2对应的位置的后面
b.下标2对应字符是取不到的

str3 = 'helloPython'
print(str3[0:5:2])  # hlo  
print(str3[0:5:3])  # hl
print(str3[-1:5:-1]) # nohty

下标的省略:
切片的时候,下标1和下标2是可以省略的
a.下标1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是字符串的最后一个字符)

str4 = 'good good study,day day up'
print(str4[:4])#good
print(str4[:4:-1])#pu yad ,yadyduts doog

b.下标2省略: 从下标1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是字符串的第一个字符)

print(str4[1:])#ood good study,day day up
print(str4[3::-1])#doog
print(str4[:])  #  good good study,day day up
print(str4[::-1])  # pu yad yad,yduts doog doog

练习:要求将一个字符串中所有下标是奇数位上的字符获取出来

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

04-字符串的相关运算.

1. + 运算符

字符串1+字符串2:
python支持两个字符串相加, 其效果就是将两个字符串拼接在一起产生一个新的字符串。
注意:如果+的一边是字符串,那么另外一个也必须是字符串。

print('abc'+'123')#abc123
str1 = 'world'
newstr = 'hello' + ' ' + str1
print(newstr)#hello world
print(10+'abc') #整数与字符串不能相加

2. * 运算符

字符串1*整数: 字符串重复多次

print('abc'*3)#abcabcabc

3. 所有的比较运算符

str1 = 'abc'
print('abc' == str1)#True
print(str1 != 'ab')#True

比较大小:
str1 > str2; str1 < str2
让str1中的每一位的字符,分别和str2中每一位的字符依次比较。
直到不同为止,再看不同字符中谁的编码值大或者小

print('dbcd' > 'abcde')#True
print('二' > '余婷')#False
print(ord('二'), ord('余')) #20108 20313

4.in 和 not in

str1 in str2: 判断str1是否在str2中(str2是否包含str1 / str1是否是str2的子串)
结果是布尔值

print('abc' in 'a1b2cdefg')#False
print('f' not in 'python')  #True

5.获取字符串长度

字符串的长度,指的是字符串中字符的个数
len()内置函数

str3 = 'project'
print(len(str3), len('abc 123\n'))#7 8
#证明空格长度为1  证明\n的长度为1

补充:空串

str4 = ''
str5 = ""
print(len(str5))#0  证明空格长度为0

len1 = len(str3)   # len1 = 7
index = len1 - 1   # 6
print(str3[-1], str3[index])    #t t

6.阻止转义

在字符串的最前面添加r/R可以阻止转义

print('a\nb','a\nb\\')
print(len('a\nb\\'))   # 4
print(r'a\nb',R'a\nb\\')
print(len(r'a\nb\\'))  # 6
print('a\\nb\\\\')  # a\nb\\
print('\\\n\\')  # \换行\
print(r'\\\n\\')  # \\\n\\  

05-字符串相关的方法

python为字符串提供了很多的内建函数
字符串.函数()
注意:这些所有的函数的功能都不会影响原来的字符串,而是产生一个新的字符串。

1.capitalize() 将字符串的第一个字符转换为大写

str1 = 'hello python'
newstr = str1.capitalize()
print(newstr, str1)#Hello python  hello python
print('abc'.capitalize())#Abc

2.center(width, fillchar)

让字符串变成width对应的长度,原内容居中,剩余的部分使用fillchar的值来填充
witdh - 整数; fillchar - 任意字符

print('abc'.center(10, '*'))  # ***abc**** 

3. rjust(width, fillchar)

让字符串变成width对应的长度,原内容靠右,剩余的部分使用fillchar的值来填充

number = '12'
new_id = number.rjust(4, '0')
print(new_id)#0012

4.原字符串.count(str)

判断str值在原字符串中出现的次数
str -> 字符串

print('abcabaa'.count('ab'))  #2

5.str1.join(str2)

在str2中的每个字符串之间插入一个str1

print('-+'.join('abc'))#a-+b-+c

6.str1.replace(old, new)

将str1中old全部替换成new

new_str = 'abcdahulapuyeahj'.replace('a','+')
print(new_str)#+bcd+hul+puye+hj

你可能感兴趣的:(day03_python _字符串)