day3字符串

2018-08-22  本文已影响14人  Smilebest

一.认识字符串

1.什么是字符串

a.用单引号或者双引号括起来的字符集就是字符串
'assd123~..?按键式','98k!'
b.字符串中的每个单独的单元叫字符,用键盘输入的,都是字符。
’98k!'中的‘9’,‘8’,‘k’,‘!’就是字符

2.转义字符

poem = '床前明月光,\n疑是地上霜'
print (poem)

输出
床前明月光,
疑是地上霜
st = '12\'25'
print (str)

输出
12'25

3.Unicode编码

a.python中字符的编码采用的是Unicode编码
b.Unicode是采用两个字节对一个字符进行编码(2^15),能够将世界上所有的符号进行编码
c.Unicode编码中包含ascii码

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

print(chr(0xA48F))        ꒏
print(chr(0x4e80))        亀

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

name1 = '陈'
name2 = '虹'   
name3 = '州'
print(ord(name1),ord(name2),ord(name3)) 

输出
38472 34425 24030

二、获取字符

1.怎么获取单个字符

str = 'abcd'   # a-->0,b-->1c-->2,d-->3
print(str[0])                  a

name = '123'   
print (name[2])                3
print (name[-3])               1
print ('123'[2])               3

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

a.字符串[下标1:下标2] :

从下标1开始,获取到下标2前的所有字符,从下标1开始,每次下标值加1,一直加到下标2前

str1 = 'hello world'
print (str1[0:4])        hell
print (str1[2:7])        llo w
print (str1[2:-1])       llo worl
print (str1[0:13])      切片时小标可以越界,越界的时候就去临界值 
b.字符串[下标1:下标2:步进]:

从下标1开始获取 ,每次下标值增加步进值,每增加一次取一个字符,直到取到下标2为止

str2 = 'hellopython'
print (str2[0:5:2])   # hlo
print (str2[-1:5:-2]) # nhy  

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

str3 = 'good good study,day day up'
print (str3[:4])              good
print (str3[:4:-1])           pu yad yad,yduts doog
print (str3[1:])                ood good study,day day up
print (str3[3::-1])             doog
print (str3[:])                 good good study,day day up
print (str3[::-1])              pu yad yad,yduts doog doog

练习:要求讲一个字符串中所有下标是奇数位上的字符取出来(位数从0开始算)

str4 = '0123456789'
print (str4[1::2])               13579
print (str4[::-2])               97531

三、字符串的相关运算

1. + 运算符

python支持两个字符串的相加,其效果就是将两个字符串拼接在一起,产生一个新的字符串

str1 = 'world'
newstr = 'hello' + ' ' + str1
print (newstr)

print(10 + 'abc') TyperError:unsupported operand typ(s) for +:'int'

2.* 运算

字符串*整数:字符串重复多次
print ('abc'*2) abcabc

3.所有的比较运算符

str1 = 'abc'
print ( 'abc' == str1)
print (str1 != 'ab')
print ('abcd' > 'abcde')
print ('陈' > '虹') 
print (ord('陈'),ord('虹'))

4.in 和 not in

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

print('abc' in 'abcdef')
print ('a' not in 'bcd')

5.获取字符串的长度

字符串的长度:指的是字符串中字符的个数

str3 = 'project'
print (len(str3),len('abc 123\n'))     7 8
str4 = '  '
str5 = "  "
print (len(str4))       0
print (str3[-1],str3[len(str3)-1])        t  t

6.阻止转义

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

print ('a\nb')      a
                    b
print (r'a\nb')    a\nb
print ('\\\n\\')   \换行\
 str7 = r'\nabc123'  求 str7[3]                  b
 str8 = 'abc123\\123'  求: str8[-5]             3

四、字符串相关的方法

python中的字符串提供了很多的内建函数

1.capitalize() 将字符串的第一个字符转换为大写
newstr = str.capitalize()
print (newstr)      Hello python
2.center(width,fillchar)

让字符串变成width对应的长度,原内容居中,剩余的部分使用fillchar的值来填充
print ('abc'.center(8,'.')) ..abc...

3.rjust(width,fillchar)

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

num = '1'
new_num = num.rjust(3,'0')
print (new_num)        001
3.原字符串.count(str)

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

str1 = '12121212'
print (str1.count('1'))     4
4.字符串1.join(字符串2)

在字符串2中的每个字符之间插入一个字符串1

print ('aa'.join('0000'))           0aa0aa0aa0
5.str1.replace(old,new)

将str1中old部分全部替换成new

new_str = 'abcdefsa'.replace('a','?')
print (new_str)            ?bcdefs?

五、python的字符串内建函数

1 .capitalize():将字符串的第一个字符转换为大写
str1 = 'teacher'
print (str1.capitalize())                Teacher
2 .center(width, fillchar):返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
num = '123'
print (num.center(8,'*'))                **123***
3 .count(str, beg= 0,end=len(string)):返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
print ('12332112'.count('1'))            3
10 .isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
print ('12335abcd'.isalnum())            True
print ('.........'.isalnum())            false
11 .isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
print ('abcde'.isalpha())                True
print ('zxc12..'.isalpha())              False

12 .isdigit():如果字符串只包含数字则返回 True 否则返回 False
print ('13450'.isdigit()) True

13 .islower():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
print ('Teacher'.islower())              False
14 .isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False
print ('132154a'.isnumeric())            False
15 .isspace():如果字符串中只包含空白,则返回 True,否则返回 False.
print ('  1 1 2 1'.isspace())            False
16 .istitle():如果字符串是标题化的(见 title())则返回 True,否则返回 False
print ('Two'.istitle())                  True
17 .isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
print ('TWO'.isupper())                  True
18 .join(seq):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
print('00'.join('111'))                  1001001
19 .len(string):返回字符串长度
print (len('123321123456789'))           15  
20 .ljust(width[, fillchar]):返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
print ('123'.ljust(8,'*'))               123*****
21 .lower():转换字符串中所有大写字符为小写.
print ('TEACHER'.lower())                teacher
22 .lstrip():截掉字符串左边的空格或指定字符
print ('    123'.lstrip())               123
print ('*****123'.lstrip('*'))           123
23 .maketrans():创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
print ('123'.maketrans('abc','789'))
29 .rjust(width,[, fillchar]):返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
print ('123'.rjust(8,'*'))                 *****123
30 .rstrip():删除字符串字符串末尾的空格.
print ('123******'.rstrip('*'))            123 
34 .strip():在字符串上执行 lstrip()和 rstrip()
print ('***123***'.strip())
35 .swapcase():将字符串中大写转换为小写,小写转换为大写 (和upper()作用一样)
print ('ASD'.swapcase())                    asd
print ('zxc'.swapcase())                    ZXC
36 .title():返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
print ('teacher is good'.title())           Teacher Is Good
38 .upper():转换字符串中的小写字母为大写
print ('asd'.upper())                       ASD
39 .zfill (width):返回长度为 width 的字符串,原字符串右对齐,前面填充0
print ('123'.zfill(8))                      00000123
40 .isdecimal():检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false
print ('1852asf'.isdecimal())               False
print ('124523'.isdecimal())                True
上一篇下一篇

猜你喜欢

热点阅读