Python字符串

到目前为止,我们只使用过数字。现在,我们再来学习另一种数据类型:字符串

Python 字符串初识

Python 中的字符串就是字符的序列(这和在大多数编程语言中是一样的),可以包含字母、数字、标点和空格。我们把字符串放在引号中,这样 Python 就会知道字符串从哪里开始到哪里结束。

例如,下面是一个常见的字符串:

>>> "Hello World!"
'Hello World!'


要输入字符串,只要输入一个双引号",后面跟着想要的字符串文本,然后用另一个双引号结束字符串。也可以使用单引号'替代双引号。但是为了简单起见,在本教程中,我们只使用双引号。

提示:大家要注意,这里的单引号和双引号都是英文(半角字符)的单引号和双引号。

字符串的存储

字符串也可以存储到变量中,就像我们对数字所做的一样。

>>> myString="This is my string"
>>> myString
'This is my string'

提示:Python 作为一门动态语言,其变量的类型可以自由变化。这个特性叫作动态类型,它提高了编写代码的效率,但也增加了阅读代码和维护代码的难度。

如果一个变量之前存储过字符串,这并不会影响到我们随后为其分配一个数字;同样,如果一个变量之前存储过数字,也不会影响到为其分配一个字符串。

例如,我们先将变量 myString 赋值为数字 5,这个时候我们可以看到,myString 的内容是一个数字。接下来,我们为 myString 重新赋值,这次将一个字符串 "This is a string" 赋给变量,可以看到,myString 的内容已经成了字符串。

>>> myString=5
>>> myString
5
>>> myString="This is a string"
>>> myString
'This is a string'

字符串与数字的判断

如果把一个数字放在引号中会怎么样呢?它是字符串还是数字呢?

在 Python 中,如果把一个数字放在引号中,它会被当成是字符串。正如我们前面提到的,字符串就是一连串的字符(即使其中偶尔有一些字符是数字)。例如:

>>> numberEight=8
>>> stringEight="8"

numberEight 是数字,stringEight 是字符串。

为了看出它们之间的区别,我们把它们相加:

>>> numberEight+numberEight
16
>>> stringEight+stringEight
'88'

我们把数字 8 加上 8,就得到数字 16。但是,当我们针对 "8" 和 "8" 使用 + 操作符时,只是把字符串直接连接在一起,得到了 "88",也就是把两个字符串连接成了一个更长的字符串。

Python 字符串连接

正如你所见到的,我们可以对字符串使用 + 操作符,但是结果与对数字使用 + 操作符大相径庭。使用 + 连接两个字符串时,会将第二个字符串附加到第一个字符串的末尾,生成一个新的字符串,如下所示:

>>> greeting="Hello "
>>> name="Johnson"
>>> greeting+name
'Hello Johnson'

这里创建了两个变量 greeting 和 name,分别为它们赋一个字符串值 "Hello" 和 "Johnson"。当我们把这两个变量加在一起时,两个字符串就组合成一个新的字符串 "Hello Johnson"。

这里需要注意一下,Python 是不会自动给字符串添加一个空格的,所以为了能隔开两个单词,我们需要在第一个字符串末尾增加一个空格。

Python 字符串的方法

方法是 Python 可以对数据执行的函数。

例如,在下面示例中,在 myName. title() 中,myName 后面的句点.让 Python 对变量 myName 执行方法 title 所指定的操作。

>>> myName="johnson"
>>> myName.title()
'Johnson'


接下来,我们再来看几个经常用到的字符串方法。

title()

title() 方法以首字母大写的方式显示每个单词,也就是将每个单词的首字母都改为大写。在上面示例中,我们用 title() 方法将 "johnson" 改变为 "Johnson"。

upper()

upper() 方法将字符串全部改写为大写字母 ,在下面示例中,upper() 方法将 "johnson" 修改为 "JOHNSON"。

>>> myName.upper()
'JOHNSON'

lower()

lower() 方法将字符串全部改写为小写字母,在下面示例中,lower() 方法将 "JOHNSON" 改为了 "johnson"。

>>> "JOHNSON".lower()
'johnson'