Python中的字符串是什么?

字符串是一个字符序列。
一个字符只是一个符号。例如,英语语言有 26 个字符。
计算机不处理字符,它们处理数字(二进制)。尽管您可能会在屏幕上看到字符,但它在内部存储和操作为 0 和 1 的组合。
这种字符到数字的转换称为编码,相反的过程称为解码。ASCII 和 Unicode 是一些常用的编码。
在 Python 中,字符串是一个 Unicode 字符序列。Unicode 被引入以包含所有语言中的每个字符并带来编码的统一性。您可以从Python Unicode了解Unicode


如何在 Python 中创建字符串?

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

defining strings in Python # all of the following are equivalent my_string = ‘Hello’ print(my_string) my_string = “Hello” print(my_string) my_string = ‘’’Hello’’’ print(my_string) # triple quotes string can extend multiple lines my_string = “””Hello, welcome to the world of Python””” print(my_string)
当你运行程序时,输出将是:
你好 你好 你好 您好,欢迎来到 Python的世界


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

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

Accessing string characters in Python str = ‘programiz’ print(‘str = ‘, str) #first character print(‘str[0] = ‘, str[0]) #last character print(‘str[-1] = ‘, str[-1]) #slicing 2nd to 5th character print(‘str[1:5] = ‘, str[1:5]) #slicing 6th to 2nd last character print(‘str[5:-2] = ‘, str[5:-2])
当我们运行上面的程序时,我们得到以下输出:
str = 程序化 str[0] = p str[-1] = z str[1:5] = rogr str[5:-2] = 上午
如果我们尝试访问超出范围的索引或使用整数以外的数字,我们将得到错误。
# index must be in range >>> my_string[15] … IndexError: string index out of range # index must be an integer >>> my_string[1.5] … TypeError: string indices must be integers
通过考虑元素之间的索引,可以最好地可视化切片,如下所示。
如果我们想访问一个范围,我们需要从字符串中分割该部分的索引。
image.png
Python 中的字符串切片


如何更改或删除字符串?

字符串是不可变的。这意味着字符串的元素一旦被赋值就不能改变。我们可以简单地将不同的字符串重新分配给相同的名称。
>>> 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 数据类型

两个或多个字符串的串联

将两个或多个字符串连接成一个字符串称为串联。
+运营商做这在Python。简单地将两个字符串文字写在一起也会连接它们。
*运算符可以用来重复字符串的特定次数。

Python String Operations str1 = ‘Hello’ str2 =’World!’ # using + print(‘str1 + str2 = ‘, str1 + str2) # using print(‘str1 3 =’, str1 3)
当我们运行上面的程序时,我们得到以下输出:
str1 + str2 = HelloWorld! str1
3 = 你好你好你好
将两个字符串文字写在一起也会像+运算符一样将它们连接起来。
如果我们想连接不同行的字符串,我们可以使用括号。
>>> # two string literals together >>> ‘Hello ‘’World!’ ‘Hello World!’ >>> # using parentheses >>> s = (‘Hello ‘ … ‘World’) >>> s ‘Hello World’


遍历字符串

我们可以使用for 循环遍历字符串。这是一个计算字符串中“l”数量的示例。

Iterating through a string count = 0 for letter in ‘Hello World’: if(letter == ‘l’): count += 1 print(count,’letters found’)
当我们运行上面的程序时,我们得到以下输出:
找到 3 个字母


字符串成员测试

我们可以使用关键字 测试子字符串是否存在于字符串中in。
>>> ‘a’ in ‘program’ True >>> ‘at’ not in ‘battle’ False


使用 Python 的内置函数

各种处理序列的内置函数也可以处理字符串。
一些常用的是enumerate()和len()。该enumerate()函数返回一个枚举对象。它包含成对的字符串中所有项目的索引和值。这对迭代很有用。
同样,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’)] 长度(字符串)= 4


Python 字符串格式化

转义序列

如果我们想打印像这样的文本 他说:“那里有什么?”, 我们既不能使用单引号也不能使用双引号。这将导致 aSyntaxError因为文本本身包含单引号和双引号。
>>> print(“He said, “What’s there?””) … SyntaxError: invalid syntax >>> print(‘He said, “What’s there?”‘) … SyntaxError: invalid syntax
解决此问题的一种方法是使用三重引号。或者,我们可以使用转义序列。
转义序列以反斜杠开头,并有不同的解释。如果我们使用单引号来表示字符串,则字符串中的所有单引号都必须转义。双引号的情况类似。这是表示上述文本的方法。

using triple quotes print(‘’’He said, “What’s there?”‘’’) # escaping single quotes print(‘He said, “What\’s there?”‘) # escaping double quotes print(“He said, \”What’s there?\””)
当我们运行上面的程序时,我们得到以下输出:
他说:“那里有什么?” 他说:“那里有什么?” 他说:“那里有什么?”
这是 Python 支持的所有转义序列的列表。

转义序列 描述
\新队 反斜杠和换行符被忽略
\\ 反斜杠
\‘ 单引号
\“ 双引号
\一种 ASCII 钟
\b ASCII 退格
\F ASCII 换页
\n ASCII 换行符
\r ASCII 回车
\t ASCII 水平制表符
\v ASCII 垂直制表符
\哦 八进制值 ooo 的字符
\xHH 具有十六进制值 HH 的字符

这里有些例子
>>> print(“C:\Python32\Lib”) C:\Python32\Lib >>> print(“This is printed\nin two lines”) This is printed in two lines >>> print(“This is \x48\x45\x58 representation”) This is HEX representation


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

有时我们可能希望忽略字符串中的转义序列。为此,我们可以将r或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() 方法

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

Python string format() method # default(implicit) order default_order = “{}, {} and {}”.format(‘John’,’Bill’,’Sean’) print(‘\n—- Default Order —-‘) print(default_order) # order using positional argument positional_order = “{1}, {0} and {2}”.format(‘John’,’Bill’,’Sean’) print(‘\n—- Positional Order —-‘) print(positional_order) # order using keyword argument keyword_order = “{s}, {b} and {j}”.format(j=’John’,b=’Bill’,s=’Sean’) print(‘\n—- Keyword Order —-‘) print(keyword_order)
当我们运行上面的程序时,我们得到以下输出:
—- 默认订单 —- 约翰、比尔和肖恩 —- 头寸订单 —- 比尔、约翰和肖恩 —- 关键字顺序—- 肖恩、比尔和约翰
该format()方法可以具有可选的格式规范。它们使用冒号与字段名称分开。例如,我们可以在给定的空间中左对齐<、右对齐>或居中^字符串。
我们还可以将整数格式化为二进制、十六进制等。浮点数可以四舍五入或以指数格式显示。您可以使用大量格式。访问此处了解 format()方法可用的所有字符串格式
>>> # formatting integers >>> “Binary representation of {0} is {0:b}”.format(12) ‘Binary representation of 12 is 1100’ >>> # formatting floats >>> “Exponent representation: {0:e}”.format(1566.345) ‘Exponent representation: 1.566345e+03’ >>> # round off >>> “One third is: {0:.3f}”.format(1/3) ‘One third is: 0.333’ >>> # string alignment >>> “|{:<10}|{:^10}|{:>10}|”.format(‘butter’,’bread’,’ham’) ‘|butter | bread | ham|’


旧样式格式

我们甚至可以像sprintf()C 编程语言中使用的旧样式那样格式化字符串。我们使用%运算符来完成此操作。
>>> x = 12.3456789 >>> print(‘The value of x is %3.2f’ %x) The value of x is 12.35 >>> print(‘The value of x is %3.4f’ %x) The value of x is 12.3457


常见的 Python 字符串方法

字符串对象有许多可用的方法。format()我们上面提到的方法就是其中之一。一些常用的方法有lower(),upper(),join(),split(),find(),replace()等。这里是所有的完整列表中内置的方法来工作,在Python字符串
>>> “PrOgRaMiZ”.lower() ‘programiz’ >>> “PrOgRaMiZ”.upper() ‘PROGRAMIZ’ >>> “This will split all words into a list”.split() [‘This’, ‘will’, ‘split’, ‘all’, ‘words’, ‘into’, ‘a’, ‘list’] >>> ‘ ‘.join([‘This’, ‘will’, ‘join’, ‘all’, ‘words’, ‘into’, ‘a’, ‘string’]) ‘This will join all words into a string’ >>> ‘Happy New Year’.find(‘ew’) 7 >>> ‘Happy New Year’.replace(‘Happy’,’Brilliant’) ‘Brilliant New Year’