Appearance
字符串
所谓字符串,就是由零个或多个字符组成的有限序列,一般记为。
定义
在Python程序中,如果我们把单个或多个字符用单引号或者双引号包围起来,就可以表示一个字符串。
Python
s1 = 'hello, world!'
s2 = "hello, world!"
print(s1, s2, end='')
三引号
三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下
Python
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
运算
- 字符串连接:
+
- 重复输出字符串:
*
- 通过索引(位置,从0开始)获取字符串中字符:
[]
- 截取字符串中的一部分:
[ : ]
- 如果字符串中包含给定的字符返回 True:
in
- 如果字符串中不包含给定的字符返回 True:
not in
Python
str1 = 'hello '
# 使用加号拼接时,没有额外的空格,需要确保所有被拼接的元素都是字符串类型,否则需要进行类型转换。
print("str1 = " + str1) # hello
str2 = 'python '
print("str2 = " + str2) # python
str3 = str1 + str2
print("str1 + str2 = " + str3) # hello python
str3 = str3 * 3
print("str3 * 3 = " + str3) # hello python hello python hello python
print("str3 = " + str3)
# 使用逗号拼接时,Python会自动在每个元素之间插入一个空格,并且可以拼接不同类型的数据。
print("11 in str1 ", 'll' in str1) # True
print("good in str1 ",'good' in str1) # False
str4 = 'abc123456'
# 从字符串中取出指定位置的字符(下标运算),第一个开始位置为0,不是1
print(str4[2]) # c
# 字符串切片(从指定的开始索引到指定的结束索引)
print(str4[2:5]) # c12
print(str4[2:]) # c123456
print(str4[2::2]) # c246
print(str4[::2]) # ac246
print(str4[::-1]) # 654321cba
print(str4[-3:-1]) # 45
格式化
- 占位符方式
Python
name = "韩梅梅"
age = 18
print ("我叫 %s 今年刚满 %d 岁!" % (name, age))
- format()
Python
name = "韩梅梅"
age = 18
print('我叫{0} 今年刚满 {1} 岁! '.format(name, age))
f
Python 3.6以后,格式化字符串还有更为简洁的书写方式,就是在字符串前加上字母f
,我们来用它简化下上面的代码。
Python
name = "韩梅梅"
age = 18
print(f'我叫{name} 今年刚满 {age} 岁! ')
转义字符
可以在字符串中使用\
(反斜杠)来表示转义,也就是说\
后面的字符不再是它原来的意义,例如:\n
不是代表反斜杠和字符n,而是表示换行;而\t
也不是代表反斜杠和字符t,而是表示制表符。所以如果想在字符串中表示'
要写成\'
,同理想表示\
要写成\\
。可以运行下面的代码看看会输出什么。
Python
s1 = '\'hello, world!\''
s2 = '\n\\hello, world!\\\n'
print(s1, s2, end='')
在\
后面还可以跟一个八进制或者十六进制数来表示字符,例如\141
和\x61
都代表小写字母a
,前者是八进制的表示法,后者是十六进制的表示法。也可以在\
后面跟Unicode字符编码来表示字符,例如\u5F00\u5FC3
代表的是中文“开心”。运行下面的代码,看看输出了什么。
Python
s1 = '\141\142\143\x61\x62\x63'
s2 = '\u5F00\u5FC3'
print(s1, s2)
原样输出
如果不希望字符串中的\
表示转义,我们可以通过在字符串的最前面加上字母r
来加以说明,再看看下面的代码又会输出什么。
Python
s1 = r'\'hello, world!\''
s2 = r'\n\\hello, world!\\\n'
print(s1, s2, end='')
其他方法
在Python中,我们还可以通过一系列的方法来完成对字符串的处理,代码如下所示。
Python
str1 = 'hello, world!'
# 通过内置函数len计算字符串的长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获得字符串每个单词首字母大写的拷贝
print(str1.title()) # Hello, World!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))
# 检查字符串是否以指定的字符串开头
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit()) # False
# 检查字符串是否以字母构成
print(str2.isalpha()) # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum()) # True
str3 = ' jackfrued@126.com '
print(str3)
# 获得字符串修剪左右两侧空格之后的拷贝
print(str3.strip())
练习
- 给定一个字符串 str,请完成以下操作:
计算字符串的长度。
将字符串转换为大写字母。
将字符串转换为小写字母。
反转字符串。
检查字符串中是否包含子字符串 "Python"。
python
str = "I love Python programming"
# 计算长度
length = len(str)
# 转换为大写
upper_str = str.upper()
# 转换为小写
lower_str = str.lower()
# 反转字符串
reversed_str = str[::-1]
# 检查是否包含 "Python"
contains_python = "Python" in str
print(length) # 输出: 25
print(upper_str) # 输出: "I LOVE PYTHON PROGRAMMING"
print(lower_str) # 输出: "i love python programming"
print(reversed_str) # 输出: "gnimmargorp nohtyP evol I"
print(contains_python) # 输出: True