Python 没有单独的字符类型,一个字符就是长度为 1 的字符串,而且字符串不能改变。

字符串引号

字符串有三种引号,单引号,双引号,三引号。

单引号

我们在字符的两边加上引号,表明我们输入的字符是字符串。普通情况下使用单引号就能表示字符串了,比如 'let me go'

双引号

但是如果我们输入 'let's go',程序直接报错,提示不合法的语法。因为表示字符串的引号需要成对出现,python 才知道你输入的是字符串。所以这个时候我们要借助双引号,改为 "let's go",程序就不会报错了。

三引号

如果我们输入字符太多,一行占据的字符太多,影响观看,我们可以考虑给字符串加上三引号,在三引号中间换行,以保证字符串的正确输出。

  1. >>> '''
  2. hello world;
  3. hello world;
  4. hello wolrd.
  5. '''
  6. '\nhello world;\nhello world;\nhello wolrd.\n'

转义字符

反斜杠 \ 在 python 中是转义字符,比如 \n 代表换行,但如果我们想原样输出 \n ,还需要在前面加上一个反斜杠,如 \\n

  1. >>> print('hello \\n world')
  2. hello \n world

常用转义字符:

转义字符 描述
\n 换行
\‘ 单引号
\t 横向制表符
\r 强制换行

字符串操作

字符串拼接

假设有两个字符串,helloworld,我们想要把这两个字符串拼接到一起,可以使用 + 连接两个字符串,使其成为一个字符串。

  1. >>> 'hello'+'world'
  2. 'helloworld'

假设我们想要一个字符串重复多次,我们可以使用 * 解决这个问题,* 后面跟上需要重复的数字:

  1. >>> 'hello world'*3
  2. 'hello worldhello worldhello world'

获取单个字符

字符串 - 图1
如果我们想要获取字符串的第一个字符,应该怎么做,或者获取字符串最后一个字符,应该怎么做。
我们可以把字符串看作是一个数组,第一个字符位于数组索引为 0 的位置。最后一个字符位于数组长度 -1 索引的位置。
假设字符串是 hello world ,我们想要获取第一个字符,可以这样实现:

  1. >>> 'hello world'[0]
  2. 'h'

想要获取最后一个字符,可以这样写:

  1. >>> 'hello world'[-1]
  2. 'd'

我们上面提到过,最后一个字符的索引是 数组长度 -1 ,所以可以简单理解为 -1 代表 数组长度 -1
倒数第二个字符:

  1. >>> 'hello world'[-2]
  2. 'l'

截取多个字符

字符串的截取的语法格式如下

  1. 变量[头下标:尾下标:步长]

假设我们想要从 hello world 获取 h 到 w 之间的字符,应该如何完成?
我们把字符串当作数组,h 的索引是 0,空格也是一个字符,所以 w 的索引是 6。

  1. >>> 'hello world'[0:6]
  2. 'hello '

从上面结果上看,结果和我们预期结果有偏差,少了一个字符。这是因为截取字符串时,需要遵循左开右闭的原则,右边的索引当作边界的话,并不会访问它,需要在目标索引位置加 1。

  1. >>> 'hello world'[0:7]
  2. 'hello w'

接下来讲一下如何快速截取字符串,我们可以把字符串快速分割为前半部分或者是后半部分。
比如有字符串 java python php c++ c# golang ,我们想要截取 python 及后面所有的字符串,可以这样写:

  1. >>> 'java python php c++ c# golang'[5:]
  2. 'python php c++ c# golang'

如果在方括号内不指定数字,说明要截取到字符串的末尾或开头。
如果只想截取 golang 字符串,可以这样写:

  1. >>> 'java python php c++ c# golang'[-6:]
  2. 'golang'

替换

规则:

  1. 字符串.replace(旧字符串,新字符串)
  1. str = 'ak47-k'
  2. replace = str.replace('k', 'm')
  3. print(replace)

结果:

  1. am47-m

分割

规则:

  1. 字符串.split(分割符)
  1. str = 'a,b,c,d'
  2. str_list = str.split(',')
  3. for split in str_list:
  4. print(split)

结果:

  1. a
  2. b
  3. c
  4. d

查找

如果查找成功,返回第一次出现的索引。如果查找失败,返回 -1
规则:

  1. 字符串.find(需要查找的字符串)
  1. str = 'a,hello'
  2. find = str.find('hello')
  3. if find > -1:
  4. print('找到了')
  5. else:
  6. print('未找到')

结果:

  1. 找到了

格式化

传统格式化的方式与 Java 很相似:

  1. name = "法外狂徒"
  2. print("hello %s" % name)

f-string

f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:

  1. name = "法外狂徒"
  2. print(f'hello {name} !')