字符串的定义
字符串是用引号包裹(引号可以是单引号、双引号、三引号)起来的文本。
比如,
name = '张糊糊'
poem = ''白日依山尽,黄河入海流''
favorite_num = '1314'
favorite_sentence = '''To be, or not to be'''
如果想运行出能换行的文本,可以用三引号包裹内容,在引号里面直接换行。
比如:
poem = '''he
llo'''
print(poem)
#输出:
he
llo
\n也可以换行,但是因为我懒,不太用。
字符串的拼接
+,多个字符串相连接
比如:
first_word = '你好'
second_word = '世界'
sentence = first_word + second_word
print(sentence)
#输出:
你好世界
字符串也可以自己加自己,比如:
sentence = '加油'
long_sentence = sentence + sentence + sentence
print(long_sentence)
#输出
加油加油加油
*,字符串可以与数字相乘
比如:
sentence = '加油加油'
long_sentence = sentence * 3
print(long_sentence)
#输出
加油加油加油
格式化输出
先用占位符占住位置,然后向占位符输入内容。
比如:
def introduce(name, age, num):
intro = '我叫%s,我%s岁,我有%s只猫'%(name, age, num)
print(intro)
introduce('张糊糊',18,2)
#输出
我叫张糊糊,我18岁,我有2只猫
%s是占位符,还有其他占位符,但我只用%s,因为它万能,我懒。
也可以使用format进行格式化输出,比如:
print('我叫{},我{}岁,我有{}只猫'.format('张糊糊', 18 ,2))
输出结果:
我叫张糊糊,我18岁,我有2只猫
字符串索引
字符串和列表一样可以索引。正向索引从0开始,反向索引从-1开始。
索引的意思是:我叫号,被叫到的人就站出来。
比如:
sentence = 'hello world'
print(sentence[0])
意思是:序号0的元素给我出来!
输出:
h
倒着叫号也行,比如:
sentence = 'hello world'
print(sentence[-1])
意思是:序号是-1的元素给我出来!
输出:
d
通过索引被叫出来的元素,也可以进行+和*的运算。比如:
item1 = '啦啦'
item2 = '嘿嘿'
print(item1[0] + item2[0])
print(item1[0]*3)
输出:
啦嘿
啦啦啦
字符串分片
可以在一整条字符串里拉出一小段。比如:
num = 'aaaa123456'
print(num[4:])
输出:
123456
字符串的分片区间[]是前包后不包的。比如print(num[4:5])其实只输出1
字符串的不可变性
这一特性是和列表相反的。列表是用[]括起来的元素。
列表的可变性举例:
lie = ['钟', '有', '艳']
lie[1] = '无'
print(lie)
输出:
['钟','无','艳']
但,字符串不可变,类似的操作用在字符串上:
zi = '钟有艳'
zi[1] = '无'
print(zi)
输出:
TypeError: 'str' does not support item assignment on line 2
想改字符串的话:
zi = '钟有艳'
zi_new = zi[0] + '无' + zi[-1]
输出:
钟无艳
字符串大小写转换
1.把整个字符串转换为大写:字符串.upper()
比如:
str_1 = 'HellO'
print(str_1.upper())
输出结果:
HELLO
2.把整个字符串转换为小写:字符串.lower()
比如:
str_2 = 'Hello World'
print(str_2.lower())
输出结果:
hello world
3.把字符串的第一个字母变大写,其他字母变小写:字符串.capitalize()
比如:
str_3 = 'heLLO'
print(str_3.capitalize())
输出结果:
Hello
4.把字符串里每个单词的首字母变大写,其他字母变小写:字符串.title()
比如:
str_4 = 'zhanghuhu has two cats'
print(str_4.title())
输出结果:
Zhanghuhu Has Two Cats
5.把字符串的大小写互换:字符串.swapcase()
比如:
str_5 = 'zhanghuhu HAS TWO cats'
print(str_5.title())
输出结果:
ZHANGHUHU has two CATS
字符串切割和组合
1.切割,用特定符号(存在于字符串里的符号)把字符串切割开:字符串.split('符号')
比如:
str_6 = 'hello'
print(str_6.split('el'))
其中el是分隔符,会成为断裂点,不会出现在结果里,结果输出:
['h', 'lo']
2.组合,把列表、元组里的单个元素用特定符号连起来:'符号'.join
比如:
str_7 = ['h','e','l','l','o']
print(''.join(str_7))
print('*'.join(str_7))
其中''、'*'是用来连接的符号,会出现在结果里,结果输出:
hello
h*e*l*l*o
3.去掉开头或结尾的指定字符:字符串.strip(符号)
比如:
str_8 = '——hello——'
print(str_8.strip('——'))
输出结果:
hello
字符串的计数、索引与替换
1.统计一个长字符串中某个短字符串出现的次数:长字符串.count(短字符串)
比如:
str_9 = 'hellohihellohisheheilalalhoho'
print(str_9.count('hi'))
以上语句的意思是:在str_9里找hi,统计hi出现的次数,
输出结果:
2
也可以用count运算长字符串的某个片段里,短字符串出现的次数:长字符串.count(短字符串,起始索引,结束索引)
比如:
str_10 = 'hellohihellohisheheilalalhoho'
print(str_10.count('hi',9,16))
以上语句的意思是:在str_10[9:16]里找hi,统计hi的次数,
输出结果:
1
2.在一个长字符串里,查看是否包含短字符串,如果包含,输出第一次出现时的索引值:长字符串.find(短字符串)
比如:
str_11 = 'zhanghuhulalalalalal1212389014567'
print(str_11.find('01'))
输出结果:
27
同count一样,find也可以在长字符串的某个片段里使用,比如:
str_12 = 'zhanghuhulalalalalal1212389014567'
print(str_12.find('01',30,31))
以上语句的意思是:在str_12[30:31]里找01,01并不存在于其中,所以输出结果:
-1
3.将长字符串里某个短字符串替换:长字符串.replace(被提换的字符串,新来的字符串,替换次数)
其中,替换次数可不填,不填的时候默认无限次替换
比如:
str_13 = 'zhanghuhuchaojiwudihaokan'
print(str_13.replace('zhanghuhu','wangergou'))
输出结果:
wangergouchaojiwudihaokan