个性化阅读
专注于IT技术分析

python3字符串string – Python3教程

上一章Python教程请查看:python3元组tuple

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

Python中的字符串是什么?

字符串是字符序列。

一个字符只是一个符号。例如,英语有26个字符。

计算机不处理字符,它们处理数字(二进制)。尽管你可能在屏幕上看到字符,但在内部,它是作为0和1的组合存储和操作的。

这种字符到数字的转换称为编码,而相反的过程称为解码,ASCII和Unicode是一些常用的编码。

在Python中,字符串是Unicode字符的序列,引入Unicode是为了包括所有语言中的所有字符,并带来编码的一致性。

如何在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)

如何访问字符串中的字符?

我们可以使用索引访问单个字符,使用切片访问一系列字符。Index从0开始,图访问超出索引范围的字符将引发一个IndexError,索引必须是整数,我们不能使用浮点数或其他类型,这将导致类型错误。

Python允许对它的序列进行负索引。

下标-1表示最后一项,下标-2表示倒数第二项,依此类推。我们可以使用切片操作符(冒号)来访问字符串中的一系列项。

str = 'srcmini'
print('str = ', str)

#第一个字符
print('str[0] = ', str[0])

#最后一个字符
print('str[-1] = ', str[-1])

#切割2到5个字符
print('str[1:5] = ', str[1:5])

#切割6到导数第二个字符
print('str[5:-2] = ', str[5:-2])

如果我们试图访问范围外的索引或使用十进制数,我们将得到如下错误。

# 索引必须在范围内
>>> my_string[15]  
...
IndexError: string index out of range
# 索引必须是整数
>>> my_string[1.5] 
...
TypeError: string indices must be integers

通过将索引考虑到如下所示的元素之间,切片可以得到最佳的可视化效果。

如果我们想要访问一个范围,我们需要从字符串中切片的索引。

元素在Python中从列表中切片

如何更改或删除字符串?

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

>>> my_string = 'srcmini'
>>> 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中就是这样做的,简单地将两个字符串字面值写在一起也会将它们连接起来。

可以使用*操作符重复给定次数的字符串。

str1 = 'Hello'
str2 ='World!'

# 使用 +
print('str1 + str2 = ', str1 + str2)

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

将两个字符串字面值写在一起也会像+运算符一样将它们串联起来。

如果要将字符串连接到不同的行,可以使用括号。

>>> # 两个字面量字符串
>>> '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,'个')

字符串成员测试

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

>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False

使用Python的内置函数

可以使用sequence和string的各种内置函数。

一些常用的是enumerate()和len(),这些函数的作用是:返回一个枚举对象,它以对的形式包含字符串中所有项的索引和值,这对于迭代很有用。

类似地,len()返回字符串的长度(字符数)。

str = 'cold'

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

#字符总数
print('len(str) = ', len(str))

Python字符串格式化

转义序列

如果我们想打印一个文本He said, “What’s there?”-我们不能使用单引号或双引号,这将导致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?\"")

下面是Python支持的所有转义序列的列表。

Python中的转义序列

转义序列 说明
\newline 忽略反斜杠和换行
\\ 反斜杠
\’ 单引号
\” 双引号
\a ASCII贝尔
\b ASCII退格
\f ASCII跳页
\n ASCII换行
\r ASCII回车
\t ASCII水平选项卡
\v ASCII垂直制表符
\ooo 带有八进制值ooo的字符
\xHH 字符带有十六进制值HH

这里有一些例子

>>> print("C:\\Python32\\Lib")
C:\Python32\Lib
>>> print("AAA\nBBB")
AAA
BBB
>>> print("This is \x48\x45\x58")
This is HEX

忽略转义序列的原始字符串

有时我们可能希望忽略字符串中的转义序列,我们可以把r放在弦的前面,这将意味着它是一个原始字符串,其中的任何转义序列都将被忽略。

>>> print("This is \x61 \ngood example")
This is a
good example
>>> print(r"This is \x61 \ngood example")
This is \x61 \ngood example

格式化字符串的format()方法

与string对象一起使用的format()方法非常通用,并且在格式化字符串方面功能非常强大,格式字符串包含大括号{}作为占位符或被替换的替换字段。

我们可以使用位置参数或关键字参数来指定顺序。

# 默认(默认)顺序
default_order = "{}, {} and {}".format('A','B','S')
print('\n--- 默认的顺序 ---')
print(default_order)

# 使用位置参数的顺序
positional_order = "{1}, {0} and {2}".format('A','B','S')
print('\n--- 位置顺序 ---')
print(positional_order)

# 使用关键字参数的顺序
keyword_order = "{s}, {b} and {a}".format(j='A',b='B',s='S')
print('\n--- 关键字顺序 ---')
print(keyword_order)

format()方法可以有可选的格式规范。它们使用冒号与字段名分隔,例如,我们可以在给定的空间内左对齐<,右对齐>或center ^字符串。我们还可以将整数格式化为二进制、十六进制等,浮点数可以四舍五入或以指数格式显示,有大量的格式可以使用。

>>> # 格式化整数
>>> " {0}的二进制表示为 {0:b}".format(12)
' 12的二进制表示为 1100'
>>> # 格式化浮点数
>>> "指数表示: {0:e}".format(1566.345)
'指数表示: 1.566345e+03'
>>> # round off
>>> "三分之一是: {0:.3f}".format(1/3)
'三分之一是: 0.333'
>>> # 字符串对齐
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter    |  bread   |       ham|'

旧式的格式

我们甚至可以格式化字符串,如C编程语言中使用的旧sprintf()样式。我们使用%操作符来完成此操作。

>>> x = 12.3456789
>>> print('X的值是:  %3.2f' %x)
X的值是:  12.35
>>> print('X的值是:  %3.4f' %x)
X的值是:  12.3457

常用的Python字符串方法

string对象有许多可用的方法。上面提到的format()方法就是其中之一。常用的方法有lower()、upper()、join()、split()、find()、replace()等。下面是Python中处理字符串的所有内置方法的完整列表。

>>> "Srcmini".lower()
'srcmini'
>>> "Srcmini".upper()
'SRCMINI'
>>> "a b c".split()
['a', 'b', 'c']
>>> ' '.join(['a', 'b', 'c'])
'abc'
>>> 'Happy New Year'.find('ew')
7
>>> 'Happy New Year'.replace('Happy','Brilliant')
'Brilliant New Year'
赞(0)
未经允许不得转载:srcmini » python3字符串string – Python3教程

评论 抢沙发

评论前必须登录!