Python学习笔记-字符串

一、基本语法

1. 字符串可以用单引号,双引号,三引号进行表达

str1='abc'   
print(str1)  #abc
str2="abc"
print(str2)  #abc
str3='''abc'''
print(str3)  #abc

2. 句子中本身含有单引号,用双引号表示字符串

print('It's OK')  #invalid syntax语法错误
print("It's OK")  #It's OK

3. 句子中本身含有双引号,用单引号表示字符串

print('He said: "Are you OK?"')  #He said: "Are you OK?"

4. 三引号中的字符串可以换行写,三引号既可以使用三个单引号,也可以使用三个双引号,但其后要保持一致

print('''abcdefg
hijklmn''')
'''
abcdefg
hijklmn
'''

5. 字符串中如果含有特殊字符,会按照转义后的含义输出

\n 换行符    \t 制表符

print('''abcdefg\nhijklmn''')
'''
abcdefg
hijklmn
'''

如何让转义字符不生效:

filepath='D:\note.txt'
print(filepath)  #因为有转义字符\n,不会打印出正确的完整路径
/*D:
ote.txt*/

1. 在转义字符前加\,转义字符不生效

filepath='D:\note.txt'
print(filepath)         #D:\note.txt

2. 在整个字符串前加r,转义字符不生效

filepath=r'D:\note.txt'
print(filepath)         #D:\note.txt

3. 将\换成/,因为在操作系统中,可以用/表示路径

filepath='D:/note.txt'
print(filepath)         #D:/note.txt

二、字符串拼接

print('1' + '2')  #12
print('1' + 2)   #报错TypeError: can only concatenate str (not "int") to str
print('1' * 2)   #11

type(): 返回对象的数据类型

print(type(1))  #<class 'int'>
print(type('1'))   #<class 'str'>

str(), int(), float(): 将对象强制转换成对应数据类型

int1=1
print(type(int1))   #<class 'int'>
str1=str(int1)    
print(str1)    #1
print(type(str1))   #<class 'str'>

print(int('1'))  #1 将字符串转换成int
print(int(1.5))  #1 将浮点数转换成int  向下取整
print(str(1.5))  #1.5 将浮点型转换成str
print(float(1))  #1.0 将整型转换成float
print(float('1'))  #1.0 将str转换成float

转换不能转两次,转换要根据实际类型来

print(int('1.2'))   #报错ValueError: invalid literal for int() with base 10: '1.2'  '1.2'->1.2不是整型,不能再将1.2换成1,所以报错
print(int('a'))  #报错ValueError: invalid literal for int() with base 10: 'a'

三、字符串下标

1. 正下标,从0开始

str1='abcdefg'
print(str[0])  #a

2. 负下标,从-1开始

str1='abcdefg'
print(str1[-1])   #g

3. 只能通过下标访问字符串,不能通过下标修改字符串,因为字符串属于不可变对象

str1='abcdefg'
str1[1]='B' #报错TypeError: 'str' object does not support item assignment

四、字符串切片

[起始值:终止值:步长]  包含起始值,不包含终止值

str1='abcdefg'
print(str1[1:4])   #bcd
print(str1[-6:-3])   #bcd
print(str1[1:])  #bcdefg
print(str1[2:0:-1])   #翻转 cb
print(str1[-5:-7:-1])  #翻转 cb
print(str1[0:6:2])  #ace
print(str1[:]) #abcdefg
print(str1[::-1]) #翻转整个字符串  gfedcba

字符串切片会生成一个新的字符串,与原字符串无关

str1='abcdefg'
print(str1[1:4])   #bcd
print(str1)   #abcdefg

五、格式化字符串

1. %

%s str型     %d int型     %f float型:默认保留6位小数

resp='我叫%s,今年%d岁,存款%f元'%('Apple',18,100)
print(resp)         #我叫Apple,今年18岁,存款100.000000元

如果前面的占位符比后面的参数多,会报错

resp='我叫%s,今年%d岁,存款%f元'%('Apple',18,100)
print(resp)    #TypeError: not enough arguments for format string

 如果后面的占位符比前面多,会报错

resp='我叫%s,今年%d岁,存款100元'%('Apple',18,100)
print(resp)     #TypeError: not all arguments converted during string formatting

至少显示n位:在%后面加上需要显示的位数(总共显示的位数),不足的位数用空格补齐

resp='我叫%10s,今年%5d岁,存款%20f元'%('Apple',18,100)
print(resp)      #我叫     Apple,今年   18岁,存款          100.000000元

如果超过n位:按照正常显示,因为是至少显示n位,超过的话也可以显示

resp='我叫%1s,今年%1d岁,存款%1f元'%('Apple',18,100)
print(resp)   #我叫Apple,今年18岁,存款100.000000元

数字可以不补空格,补0,在位数前面加上0就可以

resp='我叫%1s,今年%03d岁,存款%1f元'%('Apple',18,100)
print(resp)    #我叫Apple,今年018岁,存款100.000000元

显示默认是右对齐,如果要改成左对齐,在位数前加上负号-

resp='我叫%-10s,今年%-3d岁,存款%-20f元'%('Apple',18,100)
print(resp)   #我叫Apple     ,今年18 岁,存款100.000000          元

浮点型改变小数位数:.保留位数

resp='我叫%s,今年%d岁,存款%.2f元'%('Apple',18,100)
print(resp)      #我叫Apple,今年18岁,存款100.00元

2. .format

顺序取值

resp='我叫{},今年{}岁,存款{}元'.format('Apple',18,100.11)
print(resp)     #我叫Apple,今年18岁,存款100.11元

如果前面的占位符比后面的参数多,会报错

resp='我叫{},今年{}岁,存款{}元'.format('Apple',18)
print(resp)   #IndexError: Replacement index 2 out of range for positional args tuple

如果前面的占位符比后面的参数少,不会报错

resp='我叫{},今年{}岁,存款100元'.format('Apple',18,100.11)
print(resp)      #我叫Apple,今年18岁, 存款100元

下标取值

从0开始

resp='我叫{1},今年{3}岁,她叫{0},今年{2}岁'.format('Apple','Banana',10,20)
print(resp)            #我叫Banana,今年20岁,她叫Apple,今年10岁

多个下标可以使用多次

resp='我叫{0},她叫{0},他也叫{0}'.format('Apple')
print(resp)        #我叫Apple,她叫Apple,他也叫Apple

下标和顺序取值不能混用

resp='我叫{0},今年{1}岁,存款{}元'.format('Apple',18,100.11)
print(resp)        #ValueError: cannot switch from manual field specification to automatic field numbering

至少显示n位,在{}加上:n

resp='我叫{0:10},今年{1:10}岁,存款{2:10}元'.format('Apple',18,100.11)
print(resp)              #我叫Apple     ,今年        18岁,存款    100.11元

由上述可以看出,字符串默认左对齐,数字默认右对齐,可以修改对齐方式

<: 左对齐    >: 右对齐    ^: 居中对齐

resp='我叫{0:>10},今年{1:^10}岁,存款{2:<10}元'.format('Apple',18,100.11)
print(resp)           #我叫     Apple,今年    18    岁,存款100.11    元

数字补0:在空格处补0

resp='我叫{0:10},今年{1:>010}岁,存款{2:^010}元'.format('Apple',18,100.11)
print(resp)       #我叫Apple     ,今年0000000018岁,存款00100.1100元

3. f 

python3.6以后版本支持

a='Apple'
b='Banana'
resp=f'我叫{a}, 你叫{b}'     
print(resp)     #我叫Apple, 你叫Banana 

如果要在字符串中显示{},要加两个{}

a='Apple'
b='Banana'
resp=f'我叫{{{a}}}, 你叫{{b}}'
print(resp)    #我叫{Apple}, 你叫{b}

六、字符串方法

find()

寻找某个字符在字符串中的位置,如果找不到返回-1

str1='abcdefg'
print(str1.find('a'))    #0
print(str1.find('p'))    #-1

index()

寻找某个字符在字符串中的位置,如果找不到报错

str1='abcdefg' 
print(str1.index('a'))  #0
print(str1.index('p'))  #ValueError: substring not found

strip()

去掉字符串前后的空格或者其他字符

str1='     ab cd efg         '
print(str1.strip())      #ab cd efg
str1='********ab cd efg*********'
print(str1.strip('*'))       #ab cd efg

去掉左边的空格或其他字符:lstrip()

str1='********ab cd efg*********'
print(str1.lstrip('*'))     #ab cd efg*********

去掉右边的空格或其他字符:rstrip()

str1='********ab cd efg*********'
print(str1.rstrip('*'))        #********ab cd efg

replace()

替换字符串中所有待替换的字符 replace(待替换的字符,替换后的字符)

str1='      ab cd efg        '
print(str1.replace(' ',''))      #abcdefg

startswith()

判断字符串是否以某些元素开头

str1='abcdefg'
print(str1.startswith('abc'))     #True
print(str1.startswith('b'))       #False

endswith()

判断字符串是否以某些元素结尾

str1='abcdefg'
print(str1.endswith('a'))      #False
print(str1.endswith('fg'))     #True

split()

切割字符串

以字符串中含有的字符最为切割符,作为切割符的字符消失,返回列表

str1='abcdefg'
print(str1.split('d'))     #['abc', 'efg']

以字符串中不含有的字符最为切割符,源字符串变为列表返回

str1='abcdefg'
print(str1.split('p'))      #['abcdefg']

join()

拼接符.join(字符串) 用拼接符将字符串连接起来

str1='abcedfg'
print('-'.join(str1))    #a-b-c-e-d-f-g

七、补充:变量命名

1. 可以包含字母,下划线,数字,只能以字母或下划线开头,不能以数字开头

2. 不能有空格,可以用下划线分割其中的单词

3. 不能以python关键字和函数名做变量名

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值