目录

  • Python数据类型详解之字符串
  • 如何在Python中创建字符串
  • 如何访问字符串中的字符?
  • 如何更改或删除字符串?
  • Python字符串操作
  • 两个或多个字符串的连接
  • 遍历字符串
  • 字符串成员验证
  • 使用Python的内置函数
  • Python字符串格式化
  • 格式化字符串的format()方法


Python数据类型详解之字符串

在本教程中,您将学习如何使用Python创建、格式化、修改和删除字符串。此外,还将向您介绍各种字符串操作和函数。

如何在Python中创建字符串

字符串可以通过将字符括在单引号或双引号中来创建。甚至在Python中也可以使用三重引号,但通常用于表示多行字符串和文档字符串。

# 在Python中定义字符串
my_string = 'Hello'
print(my_string)

my_string = "Hello"
print(my_string)

my_string = '''Hello'''
print(my_string)

#  三重引号字符串可以扩展多行
my_string = """Hello, welcome to
           the world of Python"""
print(my_string)

当你运行程序时,输出将是:

Hello
Hello
Hello
Hello, welcome to
          the world of Python
如何访问字符串中的字符?

我们可以使用索引访问单个字符,使用切片访问字符范围。索引从0开始。试图访问索引范围外的字符将引发IndexError。索引必须为整数。我们不能使用浮点数或其他类型,这将导致TypeError。
Python允许对其序列进行负索引。
-1的索引指向最后一项,-2指向最后一项,以此类推。我们可以通过使用切片操作符:(冒号)来访问字符串中的一系列项。

# 在Python中访问字符串字符
str = 'programiz'
print('str = ', str)

print('str[0] = ', str[0])

print('str[-1] = ', str[-1])

print('str[1:5] = ', str[1:5])

print('str[5:-2] = ', str[5:-2])

当我们运行上面的程序时,我们得到如下输出:

str =  programiz
str[0] =  p
str[-1] =  z
str[1:5] =  rogr
str[5:-2] =  am

如果我们试图访问范围外的索引或使用非整数的数字,将发生错误。

#  索引必须在范围内
>>> my_string[15]  
...
IndexError: string index out of range

# 索引必须为整数
>>> my_string[1.5] 
...
TypeError: string indices must be integers

将索引考虑到元素之间,可以更好地可视化切片,如下所示。
如果我们想要访问一个范围,我们需要从字符串中切片的索引。

如何更改或删除字符串?

字符串是不可变的。这意味着字符串中的元素一旦被赋值就不能被更改。我们可以简单地将不同的字符串重新分配给相同的名称。

>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'

不能从字符串中删除或删除字符。但是完全删除字符串是可以使用del关键字的。

>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined
Python字符串操作

字符串可以执行许多操作,这使它成为Python中最常用的数据类型之一。

两个或多个字符串的连接

将两个或多个字符串连接成一个字符串称为连接。 在Python中,+操作符可以做到这一点。简单地将两个字符串字面值写在一起也会将它们连接起来。 操作符可以用于重复给定次数的字符串。

#  Python字符串操作
str1 = 'Hello'
str2 ='World!'

# using +
print('str1 + str2 = ', str1 + str2)

# using *
print('str1 * 3 =', str1 * 3)

当我们运行上面的程序时,我们得到如下输出:

str1 + str2 =  HelloWorld!
str1 * 3 = HelloHelloHello

将两个字符串字面值写在一起也会像+操作符一样将它们连接起来。
如果我们想在不同的行中连接字符串,我们可以使用括号。

>>> # 两个字符串字面值在一起
>>> 'Hello ''World!'
'Hello World!'

>>> s = ('Hello '
...      'World')
>>> s
'Hello World'
遍历字符串

可以使用for循环对字符串进行迭代。下面是一个计算字符串中“l”的个数的例子。

# 遍历字符串
count = 0
for letter in 'Hello World':
    if(letter == 'l'):
        count += 1
print(count,'letters found')

当我们运行上面的程序时,我们得到如下输出:

3 letters found
字符串成员验证

我们可以使用关键字in来测试字符串中是否存在子字符串。

>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False
使用Python的内置函数

处理序列的各种内置函数也可以处理字符串。
一些常用的方法是enumerate()和len()。函数的作用是:返回一个枚举对象。它以对的形式包含字符串中所有项的索引和值。这对于迭代可能很有用。
类似地,len()返回字符串的长度(字符数)。

str = 'cold'

# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str) = ', list_enumerate)

#character count
print('len(str) = ', len(str))

当我们运行上面的程序时,我们得到如下输出:

list(enumerate(str) =  [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')]
len(str) =  4
Python字符串格式化

如果我们想打印一个像他说的,“有什么?”的文本,我们不能使用单引号或双引号。这将导致SyntaxError,因为文本本身包含单引号和双引号。

>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax

解决这个问题的一种方法是使用三重引号。或者,我们可以使用转义序列。
转义序列以反斜杠开头,解释方式不同。如果使用单引号表示字符串,则字符串中的所有单引号都必须转义。双引号的情况也类似。下面是如何表示上述文本的方法。

# 使用三引号
print('''He said, "What's there?"''')

print('He said, "What\'s there?"')

print("He said, \"What's there?\"")

当我们运行上面的程序时,我们得到如下输出:

He said, "What's there?"
He said, "What's there?"
He said, "What's there?"
格式化字符串的format()方法

字符串对象可用的format()方法在格式化字符串方面非常通用和强大。格式字符串包含花括号{}作为占位符或替换字段被替换。 我们可以使用位置参数或关键字参数来指定顺序。

# Python string format() method

default_order = "{}, {} and {}".format('John','Bill','Sean')
print(default_order)

positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print(positional_order)

keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print(keyword_order)

当我们运行上面的程序时,我们得到如下输出:

John, Bill and Sean

Bill, John and Sean

Sean, Bill and John

format()方法可以有可选的格式规范。它们用冒号与字段名分隔。