字符串是Python中最基本的数据类型之一,用于表示文本数据。几乎每个应用程序都涉及使用字符串,Python的str
类提供了许多方法来简化字符串操作。
字符串用单引号或双引号表示:
string_1 = "Example string #1"
string_2 = 'Example string #2'
两种方法都是等价的。如果字符串用双引号分隔,则字符串中的任何双引号标记都需要使用反斜杠(\
)进行转义:
"My teacher said \"Don't forget your homework.\""
同样,在单引号字符串中,任何撇号或单引号表达式也需要使用反斜杠(\)进行转义
:
'This is Linode\'s documentation site.'
Python没有Character数据类型。若访问字符串中的单个字符,可以使用[ ]括号表示。与列表一样,Python字符串是零索引,因此可以使用如下命令访问字符串的第一个字符[0]
:
string_3 = "This is a string."
first_letter = string_3[0]
若从较大的字符串中获取一系列字符,请使用切片:
string_3[0:4]
这将返回从冒号前面的数字索引开始的字符(0索引,或第一个字符),但不包括冒号后面索引(4)所对应的字符。在此情况下,将返回字符串的前四个字母:
'This'
+
与*
运算符也可以运用于字符串类,用来增加或翻倍字符串。Python中的字符串是不可变的,在创建后无法进行修改。
使用add
运算符组合字符串称为拼接,拼接的两个字符串保持不变,拼接后会返回一个新字符串。
first_name = "Abraham"
last_name = " Lincoln"
first_name + last_name
Abraham Lincoln
乘法可用于生成多个字符串副本:
"a" * 10
'aaaaaaaaaa'
许多基本的字符串操作都能够使用built-in方法处理。例如,要将字符串转换为大写字母,可以使用upper
:
'example string'.upper()
EXAMPLE STRING
要从字符串的开头或结尾删除多余的空格,可以使用strip
:
'example '.strip()
'example'
字符串可以通过split
拆分为子字符串列表。默认情况下,Python将使用空格作为分隔符,这对于将句子拆分为单个单词非常有用:
'This string has five words'.split()
['This', 'string', 'has', 'five', 'words']
也可以指定不同的分隔符作为参数传递给split
:
'one,two,three,four,five'.split(',')
['one', 'two', 'three', 'four', 'five']
split
的逆操作是join
,它将字符串列表组合成一个字符串。必须在字符串上调用
join
方法,该字符串应是字符串列表中的条目分隔符:
' '.join(['This', 'string', 'has', 'five', 'words'])
'This string has five words'
','.join(['one', 'two', 'three', 'four', 'five'])
'one,two,three,four,five'
有关可用字符串方法的完整列表,请参阅官方文档。
通常,需要根据应用程序的状态动态构建字符串。例如,您可能希望自定义错误消息,其中包含导致错误的值的信息,在Python中有几种方法可以实现;本节将回顾Python3中最常用的两种方法。
在Python 3.6 之前,str.format()
方法可以说是最简单,最方便的字符串格式化方法。每个字符串对象都可以访问format
方法,该方法允许将值替换为指定位置的字符串:
name, age = "Alice", 26
string_template = 'My name is {0} and I am {1} years old.'
string_template.format(name, age)
在string_template
对象上调用format
方法。format
将逗号分隔的变量列表作为参数作为参数插入到调用方法的字符串中。变量将被替换为字符串的括号部分。第一个参数(name
参数为零,因为Python列表为零索引)被替换为字符串代替{0}
,并且age
替换{1}
。可以以这种方式进行任何数量的替换。
如果省略括号里面的数字,Python将按照传递到format
的顺序替换变量:
snack, hobby = "avocado", "tail recursion"
string_template = 'My name is {} and I am {} years old. I enjoy {} and {}.'
string_template.format(name, age, snack, hobby)
这等同于:
'My name is {0} and I am {1} years old. I enjoy {2} and {3}.'
通过将字符串声明和调用str.format
方法组合到单个语句中,通常会缩短此语法:
'My name is {} and I am {} years old. I enjoy {} and {}.'.format(name, age, snack, hobby)
'My name is Alice and I am 26 years old. I enjoy avocado and tail recursion.'
最后,回想一下变量只是Python中的一种表达式,而其他表达式通常也可以用来替换变量。在格式化字符串时也是如此,其中任意的表达式都可以传递给str.format
:
fahrenheit = 54
'The temperature is {} degrees F ({} degrees C).'.format(fahrenheit, int((fahrenheit - 32) * (5/9.0)))
Python 3.6 引入了一种更简单的格式化字符串的方法:格式化字符串文字,通常称为f-strings 方法。
ram, region = 4, 'us-east'
f'This Linode has {ram}GB of RAM, and is located in the {region} region.'
'This Linode has 4GB of RAM, and is located in the us-east region.'
在上述字符串的开头加入f
来指定为一个f-strings。该语法类似于str.format()
方法。变量名可以直接放在字符串的括号内,而不是放在字符串后面的函数调用中。这使得f-strings更紧凑和可读。
任何Python表达式都可以放在f-string的括号内,从而为它们提供更大的灵活性:
orders = [14.99,19.99,10]
f'You have {len(orders)} items in your cart, for a total cost of ${sum(orders)}.'
'You have 3 items in your cart, for a total cost of $44.98.'
有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。