2018-08-22-day3

一、字符串

1.什么是字符串

  • 用单引号或双引号括起来的字符集就是字符串
    'jfcsiufcs',"ivisl "
  • 字符串中的每个独立的单元我们叫它字符
    例如:字符串'kjdnds'中'k','j'等

2、转义字符

说明python中没有字符类型,如果要表示字符,就是用一个长度为1的字符串表示
长度:指的就是字符串中字符的个数,例如:'abc'-长度是3,空格,Tab键都是1个字符

  • 转义字符的长度都为1
    a、通过\将一些特殊的字符转换成一个具有特殊功能或特殊意义的字符,这就是转义字符
    b、常见的转义字符
    \n-换行
    \t-制表符
    \-增加1个
    '-增加一个'
    ......
poem='床前明月光,疑是地上霜'
str1='abc\nbcd'
str2='abc\\bcd'
print(poem,'\n',str1,str2)
床前明月光,疑是地上霜 
 abc
bcd abc\bcd

3、Unicode编码

a、python中字符的编码采用的是Unicode编码
b、Unicode是采用两个字节对一个字符进行编码(2~15)
c、Unicode编码中包含了ASCII码
注:
将字符转换成指定的数值,这个过程就是编码
将数值转换成对应的符号的过程就是反编码

  • 将Unicode码转换成字符
    print(chr(0xA001))——ꀁ
  • 将字符转换成Unicode编码
    print(ord("樊"),ord('振'),ord('霖'))——27146 , 25391, 38678

二、获取字符

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

1、python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串【索引】

说明:
a、字符串:可以是字符串值,也可以是字符串变量
b、[]:中括号是固定语法
c、索引:

  • 从0开始到字符串长度减一,
  • -1~-长度(-1对应的是最后一个字符,-2对应是倒数第二个字符)
    注意索引不能越界,否则会报错(产生异常)

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

  • 字符串[下标1:下标2]:从下标1开始,获取到下标2前的所有字符
  • 从下标1开始,每次下标值加一,一直加到下标二前可视为步进默认为1
    注意:下标1对应的位置一定要在下标2对应的位置前
str2='hello world'
print(str2[0:8])  #hello wo
print(str2[2:-1]) #llo worl
print(str2[2:14]) #llo world

切片操作时下标可以越界,越界时取到临界值

3、取字符串时的步进

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

str3='hello world'
print(str3[0:5:2])   步进2:hlo  步进3: hl
print(str3[0:5:-1])  #无法取,第0位在第五位前面,而步进为负
print(str3[-1:5:-1]) #dlrow

4、 下标的省略

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

  • 下标1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是最后一个字符)
str4='good good study,day day up'
print(str4[:4])
print(str4[:4:-1])
  • 下标2省略:从下标1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是第一个字符)
print(str4[1:])  
print(str4[3::-1])  #doog
print(str4[:]) #good good study,day day up
print(str4[::-1])  #pu yad yad,yduts doog doog

练习,将一个字符串中奇数位取出(从0位开始)

str='kjdsns'
print(str[1::2])

三、字符串的相关运算

1、+运算符

  • python支持两个字符串相加,其效果就是将两个字符串拼接在一起产生一个新的字符串
    注意:如果加的一边是字符串,那么另外一个也必须是字符串
print('abc'+'123')
str='world'
newstr='hello'+' '+str
print(newstr)

2、*运算符

str1* 整数(n):字符串重复n次

print('abc'*3)——abcabcabc

3、所有比较运算符

  • 比较相等'==',‘!=’
    str1='abc'
    print('abc'==str1)
    print(str1!='ab')
  • 比较大小‘>’,'<'
    str1>str2;str1 让str1中的每一位字符,分别和str2中每一位的字符依次比较直到不同为止,再看看不同字符中谁的编码值大或者小
print('abcd'>'abcde')  ——False

4、in和not in

str1 in str2:判断str1是否在str2中
结果是布尔值

print('abc'in'abcde')  ——True
print('abc'in'a1b22c3') ——False

5、获取字符串长度

字符串的长度指的是字符串中字符的个数
len()内置函数
str3='project'
print(len(str3),len('abc 123\n')) #7 8
空串(引号内什么都没有)

str4=''
print(len(str4))
len1=len(str3)
index=len1-1
print(str3[-1],str3[len(str3)-1],'\n',str3[index])

6、阻止转义

  • 在字符串的最前面添加r/R可以阻止转义
print('a\nb')  #b
print(r'a\nb') #a\nb
print(r'a\nb',R'a\nb\\') #a\nb a\nb\\

7.字符串的格式化

'格式符' %(格式符对应的值)
说明:

  • %是固定格式
  • 带格式符的字符串中有几个格式符,那么在后面的括号中就有几个和它一一对应的值
    %s——字符串
    %d——整数
    %f——浮点数 %.nf-
    %c——字符 可以将数字转换成字符拼接到字符串中
first_name='樊'
last_name='振霖'
age=21
name=first_name+last_name
print(name)

hello,xxx!今年x岁

new_str='hello,%s%s!今年%d岁。'%(first_name,last_name,age)
print(new_str)

金额:xx.xx

money=100
print('金额:%.2f元'%(money))

%c的用法

unit='$'
str5='金额:%.2f%c'%(money,unit)
char_code=94
new_str='%d对应的字符是%c'%(char_code,char_code)
print(new_str)

%x/%X

number=1000
newstr='%d的十六进制进制:%x'%(number,number)
print(newstr)

练习使用变量保存学生的名字,年龄和成绩
xxx今年xx岁,他的语文成绩是xxx。要求成绩只保留一位小数

name='樊振霖'
age=21
score=98
print('%s今年%d岁,他的语文成绩是%.1f。'%(name,age,score))

四、字符串中的相关方法

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

1、capitalize()

将字符串的第一个字符转换成大写
str1='hello python'
newstr=str1.capitalize()
print(newstr,str1)
print('abc'.capitalize())——

2、center(width,fillchar)

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

3、rjust(width,fillchar)

让字符串变成width长度,原内容靠右,剩余的部分使用fillchar填充
1 2 3 4————>001 002 003 004
number='1'
new_id=number.rjust(3,'0')
print(new_id)——001

4、count(str)

判断str值在原字符串中出现的次数
str——>字符串
print('abcaaa'.count('a'))

5、str1.join(str2)

在str2中的每个字符之间插入一个str1
print('+'.join('abc'))

6.str1.replace(old,new)

将str1中'old'全部替换成'new'
print('shdb'.replace('h','fg'))

7.str.endswith(str1)

判断字符串str是否以字符串str1结尾
print('dsobj'.endswith('bj'))

8、str.expandtabs(tabsize=8)

把字符串str中的tab符号转为空格,tab符号默认的空格数为8
str='abcd efg'
print(str.expandtabs(tabsize=3))

9.find(str)

检测 str 是否包含在字符串中,包含则返回最开始的索引值,没有则返回-1
print('abcd'.find('n'))

10、index(str)

跟find()方法一样,只不过如果str不在字符串中会报一个异常.
print('abcd'.index('b'))
print('abcd'.index('n'))

11.isalnum()

如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回 False
print('abcd'.isalnum()) ——True
print('ab12'.isalnum()) ——True
print('ab 12'.isalnum()) ——False

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