python学习笔记之字符串

python学习笔记之字符串


 

一、字符串

字符串是python的六大数据类型之一。创建字符串可以使用单引号、双引号或者三引号(如'''或"""),字符串的内容可以是各种符号、中英文字符等。一些特殊的符号需要使用反斜杠 \ 进行转义。

#四种引号定义字符串

str_one = 'hello world'

str_two = "hello world"

str_three = '''hello world'''

str_four = """hello world"""

二、字符串的取值

字符串是可迭代的类型,可以通过for循环将其中的所有字符都取出来。也可以通过索引取值的方法,取出字符串内索引对应的字符。通过切片的方法,一次取出多个字符,方法和列表的切片方法一样,可以将字符串当作列表来操作

string = 'hello'    #可迭代的对象
for s in string:
    print(s)

#输出的结果:
h
e
l
l
o

string[0]               #输出的结果:'h'
string[0:3]            #输出的结果:'hel'

string.split('e')        #以'e'为分割符,切成两部分,返回列表['h', 'llo']
list(string)                #转化成列表,['h', 'e', 'l', 'l', 'o']
View Code

三、字符串的拼接及格式化输出

字符串与字符串之间的拼接有两种方法:

1.'+'加号拼接

str_one = 'hello'
str_two = 'world'
string = str_one + str_two

这种方法使用起来简单直接,但是效率相比下面的方法有些低,尤其在拼接多个字符串时,不建议使用,因为这个方法除了生成新的字符串时会开辟一个新的内存,在生成前的加号也要开辟一个新的内存。

2.join方法拼接

string = ''.join([str_one, str_two])         #join的参数必须是可迭代的对象
print(string)                                #输出'helloworld'

string = ' '.join([str_one, str_two])        #引号间增加一个空格,字符串之间拼接会增加一个空格,引号间可以是任意字符,拼接后的字符串之间都会以引号间的字符隔开
print(string)                                #输出'hello world'

字符串方法join可用于拼接列表、元组等可迭代的对象,但注意如果传入的字典,最后得到的是字典key拼接后的结果。可以将传入列表或元组中的元素连接起来,返回一个连接后的字符串,一个列表或元组中的元素进行拼接,这个方法首选,只是这个方法使用起来略微复杂。

3.'%'符号拼接

string = '%s%s' %(str_one, str_two)              #元组中变量顺序要对应%s的顺序
print(string)

print('姓名:%s, 问题:%s' %(str_one, str_two))    #用于这种情况较多     

这个方法通常用于进行格式化输出,输出一定格式的字符串,将'%'符号后的特殊符号(又称为占位符)替换成引号右边'%'符号的变量值,除了字符串也可以用于替换数字类型。

4.format()方法拼接

string = '{}{}'
print(string.format(str_one, str_two))           #输出helloworld

#也可以用于格式化输出
print('你好:{one}, 世界:{two}'.format(one=str_one, two=str_two))

format和join一样都是字符串方法,和'%'符号类似,可以将字符串内特殊符号位置替换成format()方法中传入的参数

5.string模块中Template类拼接

这种方法不是很常见,使用这个方法时需要先实例化一个Template对象,并传入一个特殊字符和key(如${key}),再用对象调用substitute或safe_substitute方法传入关键参数,这两个方法的区别是当有个key没传值的话,safe_substitute会将特殊字符和key名直接拼接到字符串,substitute则直接抛出异常

from string import Template
st = Template('${one} ${two}')
print(st.substitute(one=str_one, two=str_two))    #输出hello world

6.f-string拼接

python3.6版本引入了的一种新的格式化字符串方法-string,叫做格式化字符串常量(formatted string literals),定义字符串引号前使用修饰符'f'或'F',字符串内使用大括号{}里放入变量名或表达式等,这个方法还有许多用法,以后有空对这个方法单写一篇。如果你用的python版本是3.6及以上的,建议用这个方法,使用起来非常简洁而且性能优,运行速度高于上面的这几种方法。

string = f'{str_one}{str_two}'                  #两个字符串拼接

num_one = 1
num_two = 2
print(f'一加二等于{num_one + num_two}')           #运算大括号里的表达式,输出结果:一加二等于3
print(f'一加二等于{{num_one + num_two}}')      #输出结果:一加二等于{num_one + num_two}
print(f'一加二\'等于\'{num_one + num_two}')     #输出结果:一加二'等于'3

7.其他的拼接

print(str_one, str_two)                    #这样输出时,两个字符串会拼接,但是中间会多出一个空格,输出hello world

str_five = ('hello' 'world')
print(str_five)                                #两个字符串拼接,输出helloworld

上面这两种拼接方法,通常不会去用,但是遇见这样的代码,我需要知道这里会做字符串的拼接

四、字符串内置方法

一些常用的字符串内置方法:

string.count('')                                                                  #字符串中某个元素的次数
string.capitalize()                                                               #字符串首字符大写
string.center(50,'-)                                                              #字符串一共50个字节,除string外,其他用’-’替代,且string矩阵
string.endswith('')                                                               #判断字符串以哪个字符串结尾,返回bool型
string.startswith('')                                                             #判断字符串以哪个字符串开头,返回bool型
string.expandtabs(tabsize=20)                                                 #替换字符串的\t,换成20个空格
string.find('')                                                                   #查找字符串中的某个元素,并返回它的索引值
string.format()                                                                   #相当于格式化输出的用法
string.format_map()                                                               #和format方法的区别在于,这个方法参数是字典
string.index()                                                                    #方法和find用法一样,不同的是find不会报错会返回-1,index会报异常
string.isalnum()                                                                  #字符串中包含数字和字母就会返回true,否则就是false
string.isdecimal()                                                                #判断字符串是不是十进制
string.isdigit()                                                                  #判断字符串内是不是个整型数,返回bool型
string.isnumeric()                                                                #和上面方法一样
string.isidentifier()                                                             #判断字符串是不是非法变量
string.islower()                                                                  #判断字符串内是不是都是小写的
string.isupper()                                                                  #判断字符串内是不是都是大写的
string.isspace()                                                                  #判断字符串是不是都是个空格
string.istitle()                                                                  #判断字符串是不是个标题(首字母大写)
string.lower()                                                                    #将字符串中所有大写变成小写
string.upper()                                                                    #将字符串中所有小写变成大写
string.swapcase()                                                                 #将字符串中所有小写变成大写, 将字符串中所有大写变成小写
string.ljust(50,’-')                                                              #string靠左,剩余的用’-’填充          
string.rjust(50,’-')                                                              #string靠右,剩余的用’-’填充
string.strip()                                                                    #去掉字符串左右的空格和换行符
string.replace()                                                                  #替换字符串的元素成另一个元素,可以传入三个参数,第一个是原元素,第二个是替换成的元素,第三个是替换几次
string.rfind()                                                                    #从右开始往左找,返回第一个匹配到的索引值
string.split()                                                                    #分割字符串,返回列表,第二参数表示最多分割几次
string.title()                                                                    #字符串变成title形式,首字母大写

ps:

通过str类,可以直接将一些数据类型转化成字符串类型

str_list = [1, 2, 3]
print(str(str_list))                        #这样转化出来的值是'[1, 2, 3]', 和字符串拼接不一样

one = 1
print(str(one))                             #这样是把整型转化成字符串类型

byte = b"hello"
print(str(byte, encoding='utf-8'))        #将bytes类型转化成字符串类型

 

转载于:https://www.cnblogs.com/seenming/p/9787239.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值