Python 字符串

到目前为止,我们已经讨论了 Python 中作为标准数据类型的数字。在本节教程中,我们将讨论 Python 中最流行的数据类型,即字符串。

Python 字符串是由单引号、双引号或三引号括起来的字符的集合。计算机不理解字符;在内部,它将被操纵的字符存储为 0 和 1 的组合。

每个字符都用 ASCII 或 Unicode 字符编码。所以我们可以说 Python 字符串也叫做 Unicode 字符的集合。

在 Python 中,字符串可以通过在引号中包含字符或字符序列来创建。Python 允许我们使用单引号、双引号或三引号来创建字符串。

考虑下面 Python 中的例子来创建一个字符串。

语法:


str = "Hi Python !"

这里,如果我们使用 Python 脚本检查变量字符串的类型


print(type(str)), then it will print a string (str).

在 Python 中,字符串被视为字符序列,这意味着 Python 不支持字符数据类型;相反,写为“p”的单个字符被视为长度为 1 的字符串。

用 Python 创建字符串

我们可以通过用单引号或双引号将字符括起来来创建字符串。Python 还提供了三重引号来表示字符串,但它通常用于多行字符串或文档字符串


#Using single quotes
str1 = 'Hello Python'
print(str1)
#Using double quotes
str2 = "Hello Python"
print(str2)

#Using triple quotes
str3 = '''Triple quotes are generally used for
represent the multiline or
docstring'''
print(str3)

输出:

Hello Python
Hello Python
Triple quotes are generally used for
represent the multiline or
docstring

字符串索引和拆分

像其他语言一样,Python 字符串的索引从 0 开始。例如,字符串“HELLO”的索引如下图所示。

Python String

考虑以下示例:


str = "HELLO"
print(str[0])
print(str[1])
print(str[2])
print(str[3])
print(str[4])
# It returns the IndexError because 6th index doesn't exist
print(str[6])

输出:

H
E
L
L
O
IndexError: string index out of range

如 Python 所示,切片运算符[]用于访问字符串的各个字符。但是,我们可以使用 Python 中的:(冒号)运算符从给定的字符串中访问子字符串。考虑下面的例子。

Python String

在这里,我们必须注意到切片运算符中给出的上限总是排他的,即如果给定了 str = 'HELLO ',那么 str[1:3]将始终包括 str[1] = 'E ',str[2] = 'L '等。

考虑以下示例:


# Given String
str = "JAVATPOINT"
# Start Oth index to end
print(str[0:])
# Starts 1th index to 4th index
print(str[1:5])
# Starts 2nd index to 3rd index
print(str[2:4])
# Starts 0th to 2nd index
print(str[:3])
#Starts 4th to 6th index
print(str[4:7])

输出:

JAVATPOINT
AVAT
VA
JAV
TPO

我们可以在字符串中进行负切片;它从最右边的字符开始,表示为-1。第二个最右边的索引表示-2,依此类推。请看下图。

Python String

考虑以下示例


str = 'JAVATPOINT'
print(str[-1])
print(str[-3])
print(str[-2:])
print(str[-4:-1])
print(str[-7:-2])
# Reversing the given string
print(str[::-1])
print(str[-12])

输出:

T
I
NT
OIN
ATPOI
TNIOPTAVAJ
IndexError: string index out of range

重新分配字符串

更新字符串的内容就像将其分配给新字符串一样简单。字符串对象不支持项赋值,即字符串只能用新字符串替换,因为它的内容不能被部分替换。字符串在 Python 中是不可变的。

考虑下面的例子。

例 1


str = "HELLO"
str[0] = "h"
print(str)

输出:

Traceback (most recent call last):
File "12.py", line 2, in <module>
str[0] = "h";
TypeError: 'str' object does not support item assignment

然而,在示例 1 中,字符串 str 可以被完全分配给新的内容,如以下示例中所指定的。

例 2


str = "HELLO"
print(str)
str = "hello"
print(str)

输出:

HELLO
hello

删除字符串

我们知道字符串是不可变的。我们不能删除字符串中的字符。但是我们可以使用 del 关键字删除整个字符串。


str = "JAVATPOINT"
del str[1]

输出:

TypeError: 'str' object doesn't support item deletion

现在我们删除整个字符串。


str1 = "JAVATPOINT"
del str1
print(str1)

输出:

NameError: name 'str1' is not defined

字符串运算符

操作符描述
+它被称为连接运算符,用于连接运算符两侧的字符串。
*它被称为重复算子。它将同一字符串的多个副本连接起来。
[]它被称为切片算子。它用于访问特定字符串的子字符串。
[:]它被称为范围切片运算符。它用于访问指定范围内的字符。
in它被称为成员运算符。如果指定的字符串中存在特定的子字符串,则返回。
not in它也是一个成员操作符,其作用与 in 完全相反。如果指定的字符串中不存在特定的子字符串,则返回 true。
r/R它用于指定原始字符串。原始字符串用于我们需要打印转义字符(如“C://python”)的实际含义的情况。要将任何字符串定义为原始字符串,字符 R 或 R 后面是字符串。
%它用于执行字符串格式化。它利用 C 编程中使用的格式说明符,如%d 或%f,在 python 中映射它们的值。我们将讨论如何在 python 中进行格式化。

例子

考虑下面的例子来理解 Python 操作符的真正用途。


str = "Hello"
str1 = " world"
print(str*3) # prints HelloHelloHello
print(str+str1)# prints Hello world
print(str[4]) # prints o
print(str[2:4]); # prints ll
print('w' in str) # prints false as w is not present in str
print('wo' not in str1) # prints false as wo is present in str1\.
print(r'C://python37') # prints C://python37 as it is written
print("The string str : %s"%(str)) # prints The string str : Hello

输出:

HelloHelloHello
Hello world
o
ll
False
False
C://python37
The string str : Hello

Python 字符串格式

换码顺序

让我们假设我们需要把文本写成——他们说,“你好,发生什么事了?”-给定的语句可以用单引号或双引号写出,但它会引发语法错误,因为它同时包含单引号和双引号。

例子

考虑下面的例子来理解 Python 操作符的真正用途。


str = "They said, "Hello what's going on?""
print(str)

输出:

SyntaxError: invalid syntax

我们可以使用三重引号来解决这个问题,但是 Python 提供了转义序列。

反斜杠(/)符号表示转义序列。反斜杠后面可以跟一个特殊的字符,它有不同的解释。字符串中的单引号必须转义。我们可以应用与双引号中相同的内容。

示例-


# using triple quotes
print('''They said, "What's there?"''')

# escaping single quotes
print('They said, "What\'s going on?"')

# escaping double quotes
print("They said, \"What's going on?\"")

输出:

They said, "What's there?"
They said, "What's going on?"
They said, "What's going on?"

转义序列列表如下所示:

转义序列

以下是转义序列的简单示例。


print("C:\\Users\\DEVANSH SHARMA\\Python32\\Lib")
print("This is the \n multiline quotes")
print("This is \x48\x45\x58 representation")

输出:

C:\Users\DEVANSH SHARMA\Python32\Lib
This is the
multiline quotes
This is HEX representation

我们可以使用原始字符串忽略给定字符串的转义序列。我们可以通过在字符串前面写 rR 来实现。考虑下面的例子。


print(r"C:\\Users\\DEVANSH SHARMA\\Python32")

输出:

C:\\Users\\DEVANSH SHARMA\\Python32

format()方法

format() 方法是格式化字符串时最灵活、最有用的方法。大括号{}用作字符串中的占位符,并被**格式()**方法参数替换。让我们看一下给出的一个例子:


# Using Curly braces
print("{} and {} both are the best friend".format("Devansh","Abhishek"))

#Positional Argument
print("{1} and {0} best players ".format("Virat","Rohit"))

#Keyword Argument
print("{a},{b},{c}".format(a = "James", b = "Peter", c = "Ricky"))

输出:

Devansh and Abhishek both are the best friend
Rohit and Virat best players
James,Peter,Ricky

使用%运算符的 Python 字符串格式

Python 允许我们使用 C 的 printf 语句中使用的格式说明符。Python 中的格式说明符的处理方式与 c 语言中的相同。但是,Python 提供了一个额外的运算符%,用作格式说明符及其值之间的接口。换句话说,我们可以说它将格式说明符绑定到值。

考虑下面的例子。


Integer = 10;
Float = 1.290
String = "Devansh"
print("Hi I am Integer ... My value is %d\nHi I am float ... My value is %f\nHi I am string ... My value is %s"%(Integer,Float,String))

输出:

Hi I am Integer ... My value is 10
Hi I am float ... My value is 1.290000
Hi I am string ... My value is Devansh


Python 字符串函数

Python 提供了各种用于字符串处理的内置函数。许多字符串乐趣

方法描述
capitalize()它将字符串的第一个字符大写。python3 中不推荐使用此函数
casefold()它返回适合无大小写比较的 s 版本。
center(width ,fillchar)它返回一个空格填充的字符串,原始字符串以相等数量的左右空格为中心。
count(string,begin,end)它计算字符串中开始和结束索引之间的子字符串出现的次数。
decode(encoding = ‘UTF8’, errors = ‘strict’)使用注册用于编码的编解码器解码字符串。
encode()使用为编码注册的编解码器对 S 进行编码。默认编码为“utf-8”。
endswith(suffix ,begin=0,end=len(string))如果字符串在开始和结束之间以给定后缀结束,它将返回一个布尔值。
expandtabs(tabsize = 8)它将字符串中的制表符定义为多个空格。默认空间值为 8。
find(substring ,beginIndex, endIndex)它返回在开始索引和结束索引之间找到子字符串的字符串的索引值。
format(value)它使用传递的值返回 S 的格式化版本。
index(subsring, beginIndex, endIndex)如果找不到字符串,它将引发异常。它的工作原理与 find()方法相同。
isalnum()如果字符串中的字符是字母数字,即字母或数字,并且至少有 1 个字符,则返回 true。否则,它返回 false。
isalpha()如果所有字符都是字母并且至少有一个字符,则返回真,否则返回假。
isdiction()如果字符串的所有字符都是小数,则返回 true。
isdigital()如果所有字符都是数字并且至少有一个字符,则返回真,否则返回假。
isidentifier()如果字符串是有效的标识符,则返回 true。
islower())如果字符串的字符是小写,则返回 true,否则返回 false。
isnumeric()如果字符串只包含数字字符,则返回 true。
isprintable()如果 s 的所有字符都是可打印的或 s 为空,则返回 true,否则返回 false。
isupper()如果字符串的字符为大写,则返回 false,否则返回 False。
isspace()如果字符串的字符是空格,则返回 true,否则返回 false。
istitle()如果字符串标题正确,则返回 true,否则返回 false。标题字符串的第一个字符是大写的,而其他字符是小写的。
isupper()如果字符串的所有字符(如果存在)都为真,则返回真,否则返回假。
join(seq)它合并给定序列的字符串表示。
len(string)它返回字符串的长度。
ljust(width[,fillchar])它返回空格填充的字符串,原始字符串左对齐给定的宽度。
lower()它将字符串的所有字符转换为小写。
lstrip()它删除字符串的所有前导空格,也可用于删除前导中的特定字符。
partition()它在 S 中搜索分隔符 sep,并返回它之前的部分、分隔符本身和它之后的部分。如果找不到分隔符,返回 S 和两个空字符串。
maketrans()它返回一个用于翻译函数的翻译表。
replace(old,new[,count])它用新的字符序列替换旧的字符序列。如果给定了 max,则 max 字符将被替换。
rfind(str,beg=0,end=len(str))它类似于 find,但它以向后的方向遍历字符串。
rindex(str,beg=0,end=len(str))它与索引相同,但它以向后的方向遍历字符串。
rjust(width,[,fillchar])返回一个空格填充的字符串,其原始字符串右对齐指定的字符数。
rstrip()它删除字符串的所有尾部空白,也可以用来删除尾部的特定字符。
rsplit(sep = none,maxsplit = -1)它与 split()相同,但它从向后的方向处理字符串。它返回字符串中的单词列表。如果未指定分隔符,则字符串会根据空格进行拆分。
split(str,num=string.count(str))根据分隔符字符串拆分字符串。如果未提供分隔符,字符串将根据空格进行拆分。它返回与分隔符连接的子字符串列表。
splitlines(num=string.count(‘\n’))它返回删除换行符后每行的字符串列表。
startswith(str,beg=0,end=len(str))如果字符串从开始和结束之间的给定字符串开始,它将返回一个布尔值。
strip([chars])它用于对字符串执行 lstrip()和 rstrip()。
swapcase()它反转字符串中所有字符的大小写。
title()它用于将字符串转换为标题大小写,即字符串meereut将转换为 meereut。
translate(table,deletechars = ‘’)它根据函数中传递的转换表来转换字符串。
upper()它将字符串的所有字符转换为大写。
zfill(width)返回用零填充的原始字符串,总宽度为个字符;zfill()用于数字,保留任何给定的符号(小于零)。
rpartition()

原文:https://www.javatpoint.com/python-strings