第6天-python基础-常用数据结构之字符串

2022-06-15  本文已影响0人  开心爸爸

字符串的定义

所谓字符串,就是由零个或多个字符组成的有限序列
在Python程序中,如果我们把单个或多个字符用单引号或者双引号包围起来,就可以表示一个字符串。字符串中的字符可以是特殊符号、英文字母、中文字符、日文的平假名或片假名、希腊字母、Emoji字符等。

s1 = "hello, world!"
s2 = "你好,世界!"
print(s1,s2)#hello, world! 你好,世界!
# 以三个双引号或单引号开头的字符串可以折行
s3 = '''
hello,
world!
'''
print(s3, end='')
#hello,
#world!

提示:print函数中的end=''表示输出后不换行,即将默认的结束符\n(换行符)更换为''(空字符)。

转义字符和原始字符串

可以在字符串中使用\(反斜杠)来表示转义,也就是说\后面的字符不再是它原来的意义,例如:\n不是代表反斜杠和字符n,而是表示换行;\t也不是代表反斜杠和字符t,而是表示制表符。所以如果字符串本身又包含了'、"、\这些特殊的字符,必须要通过\进行转义处理。例如需要一个带单引号或反斜杠的字符串,可以用如下所示的方法进行处理。

s1 = '\'hello, world!\''
s2 = '\\hello, world!\\'

print(s1)#'hello, world!'
print(s2)#\hello, world!\

Python中的字符串可以r或R开头,这种字符串被称为原始字符串,意思是字符串中的每个字符都是它本来的含义,没有所谓的转义字符。例如,在字符串'hello\n'中,\n表示换行;而在r'hello\n'中,\n不再表示换行,就是反斜杠和字符n。大家可以运行下面的代码,看看会输出什么。

s1 = '\time up \now'
print(s1)#  ime up 
#ow

s2 = r'\time up \now'
print(s2)#\time up \now

Python中还允许在\后面还可以跟一个八进制或者十六进制数来表示字符,例如\141和\x61都代表小写字母a,前者是八进制的表示法,后者是十六进制的表示法。另外一种表示字符的方式是在\u后面跟Unicode字符编码,例如\u9a86\u660a代表的是中文“骆昊”。运行下面的代码,看看输出了什么。

s1 = '\141\142\143\x61\x62\x63'
s2 = '\u006b\u006b'
print(s1, s2)#abcabc kk

字符串的运算

Python为字符串类型提供了非常丰富的运算符,我们可以使用+运算符来实现字符串的拼接,可以使用*运算符来重复一个字符串的内容,可以使用in和not in来判断一个字符串是否包含另外一个字符串,我们也可以用[]和[:]运算符从字符串取出某个字符或某些字符。

拼接和重复

下面的例子演示了使用+和*运算符来实现字符串的拼接和重复操作。

s1 = 'hello' + ' ' + 'world'
print(s1)#hello world
s2 = '!' * 3
print(s2)#!!!
s1 += s2#s1 = s1+s2
print(s1)#hello world!!!
s1 *= 2#s1 = s1 * 2
print(s1)#hello world!!!hello world!!!

用*实现字符串的重复是非常有意思的一个运算符,在很多编程语言中,要表示一个有10个a的字符串,你只能写成"aaaaaaaaaa",但是在Python中,你可以写成'a' * 10。你可能觉得"aaaaaaaaaa"这种写法也没有什么不方便的,那么想一想,如果字符a要重复100次或者1000次又会如何呢?

比较运算

对于两个字符串类型的变量,可以直接使用比较运算符比较两个字符串的相等性或大小。需要说明的是,因为字符串在计算机内存中也是以二进制形式存在的,那么字符串的大小比较比的是每个字符对应的编码的大小。例如A的编码是65, 而a的编码是97,所以'A' < 'a'的结果相当于就是65 < 97的结果,很显然是True;而'boy' < 'bad',因为第一个字符都是'b'比不出大小,所以实际比较的是第二个字符的大小,显然'o' < 'a'的结果是False,所以'boy' < 'bad'的结果也是False。如果不清楚两个字符对应的编码到底是多少,可以使用ord函数来获得,例如ord('A')的值是65,而ord('昊')的值是26122。下面的代码为大家展示了字符串的比较运算。

上一篇下一篇

猜你喜欢

热点阅读