Python教程-Python字符串
迄今为止,我们已经讨论了Python中作为标准数据类型的数字。在本教程的这一部分中,我们将讨论Python中最受欢迎的数据类型,即字符串。
Python字符串是由单引号、双引号或三引号包围的字符集合。计算机无法理解这些字符;在内部,它将操作后的字符存储为0和1的组合。
每个字符都被编码为ASCII或Unicode字符。因此,我们可以说Python字符串也被称为Unicode字符的集合。
在Python中,可以通过在引号中包含字符或字符序列来创建字符串。Python允许我们使用单引号、双引号或三引号来创建字符串。
考虑以下Python示例以创建一个字符串。
语法:
str = "Hi Python !"
在这里,如果我们使用Python脚本检查变量str的类型:
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"的索引如下图所示。
考虑以下示例:
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中,我们可以使用:(冒号)运算符来访问给定字符串的子字符串。考虑以下示例。
在这里,我们必须注意切片运算符中给定的上限始终是排他的,即如果给定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,依此类推。考虑以下图像。
考虑以下示例
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 | 成员运算符,如果指定的子字符串存在于字符串中,则返回True。 |
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字符串格式化
转义序列
假设我们需要写出文本 - "They said, "Hello what's going on?"- 给定的语句可以用单引号或双引号表示,但它会引发SyntaxError,因为它包含了单引号和双引号。
示例
考虑以下示例以了解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?"
转义序列的列表如下:
序号 | 转义序列 | 描述 | 示例 |
---|---|---|---|
1. | newline | 忽略换行符 | print("Python1 \ Python2 \ Python3") 输出:Python1 Python2 Python3 |
2. | \ | 反斜杠 | print("\\") 输出:\ |
3. | ' | 单引号 | print('\'') 输出:' |
4. | '' | 双引号 | print("\"") 输出:" |
5. | a | ASCII响铃 | print("\a") |
6. | b | ASCII退格(BS) | print("Hello \b World") 输出:Hello World |
7. | f | ASCII换页 | print("Hello \f World!") Hello World! |
8. | n | ASCII换行 | print("Hello \n World!") 输出:Hello World! |
9. | r | ASCII回车(CR) | print("Hello \r World!") 输出:World! |
10. | t | ASCII水平制表符 | print("Hello \t World!") 输出:Hello World! |
11. | v | ASCII垂直制表符 | print("Hello \v World!") 输出:Hello World! |
12. | ooo | 八进制字符 | print("\110\145\154\154\157")**输出:** Hello |
13 | xHH | 十六进制字符 | print("\x48\x65\x6c\x6c\x6f") 输出:Hello |
以下是转义序列的简单示例。
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
我们可以通过在字符串前面写上r或R来忽略给定字符串中的转义序列。可以通过将r或R字符放在字符串后面来实现。考虑以下示例。
print(r"C:\\Users\\DEVANSH SHARMA\\Python32")
输出:
C:\\Users\\DEVANSH SHARMA\\Python32
format()方法
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() | 返回适用于不区分大小写比较的字符串版本。 |
center(width ,fillchar) | 返回一个使用原始字符串与相等数量的左右空格填充的字符串。 |
count(string,begin,end) | 计算开始和结束索引之间字符串中子字符串的出现次数。 |
decode(encoding = 'UTF8', errors = 'strict') | 使用编码为encoding的解码s。 |
encode() | 使用编码为encoding的编码s。默认编码为'utf-8'。 |
endswith(suffix ,begin=0,end=len(string)) | 返回布尔值,如果字符串在begin和end之间以给定后缀结尾,则返回True。 |
expandtabs(tabsize = 8) | 定义字符串中的制表符,以多个空格表示。默认空格值为8。 |
find(substring ,beginIndex, endIndex) | 在开始和结束索引之间查找子字符串在字符串中的索引值。 |
format(value) | 使用传递的值返回格式化版本的S。 |
index(subsring, beginIndex, endIndex) | 如果未找到字符串,则抛出异常。与find()方法的工作方式相同。 |
isalnum() | 如果字符串中的字符是字母数字字符(即字母或数字),并且至少有一个字符,则返回True。否则返回False。 |
isalpha() | 如果所有字符都是字母字符,并且至少有一个字符,则返回True,否则返回False。 |
isdecimal() | 如果字符串的所有字符都是小数,则返回True。 |
isdigit() | 如果所有字符都是数字字符,并且至少有一个字符,则返回True,否则返回False。 |
isidentifier() | 如果字符串是有效的Python标识符,则返回True,否则返回False。 |
islower() | 如果所有字符都是小写字符,并且至少有一个字符,则返回True,否则返回False。 |
isnumeric() | 如果字符串中的所有字符都是数字字符,并且至少有一个字符,则返回True,否则返回False。 |
isprintable() | 如果字符串中的所有字符都是可打印字符,并且至少有一个字符,则返回True,否则返回False。 |
isspace() | 如果字符串中的所有字符都是空格字符,并且至少有一个字符,则返回True,否则返回False。 |
istitle() | 如果字符串是标题,即所有的标头单词都以大写字母开头并且都有小写字母,就像在标题中一样,则返回True,否则返回False。 |
isupper() | 如果字符串中的所有字符都是大写字符,并且至少有一个字符,则返回True,否则返回False。 |
join(iterable) | 以字符串作为分隔符,将可迭代的字符串序列连接到一个字符串中。 |
ljust(width, fillchar) | 返回一个左对齐的字符串,使用fillchar填充原始字符串和空格。 |
lower() | 返回字符串的小写副本。 |
lstrip() | 返回一个修剪了字符串的左边的字符串。 |
maketrans() | 返回字符串转换表,用于使用translate()方法。 |
partition(separator) | 返回一个元组,其中包含由指定分隔符分隔的字符串的所有部分。 |
replace(old ,new, count) | 将old子字符串替换为new子字符串。如果指定了计数,则只替换前count次出现。 |
rfind(substring, beginIndex, endIndex) | 在开始和结束索引之间查找子字符串在字符串中的最后一次出现的索引值。 |
rindex(substring, beginIndex, endIndex) | 在开始和结束索引之间查找子字符串在字符串中的最后一次出现的索引值。 |
rjust(width ,fillchar) | 返回一个右对齐的字符串,使用fillchar填充原始字符串和空格。 |
rpartition(separator) | 返回一个元组,其中包含由指定分隔符分隔的字符串的所有部分,但只从右边开始分隔。 |
rsplit(separator, maxsplit) | 以separator为分隔符,将字符串分割成子字符串列表,从右到左分割。 |
rstrip() | 返回修剪了字符串右边的字符串。 |
split(separator, maxsplit) | 使用分隔符将字符串分割为子字符串列表。 |
splitlines(keepline=True) | 返回一系列字符串,表示原始字符串中的每行。 |
startswith(substring, beginIndex, endIndex) | 如果子字符串在字符串的开始位置,则返回True。 |
strip() | 返回修剪了字符串两端的字符串。 |
swapcase() | 返回具有大小写交换功能的字符串的副本。 |
title() | 返回以单词标题形式表示的字符串副本。 |
translate(translation) | 返回通过使用maketrans()方法制作的转换表中的字符映射到相应的字符上的字符串的副本。 |
upper() | 返回字符串的大写副本。 |
zfill(width) | 在数字字符串左侧填充零('0')字符,直到字符串宽度达到宽度参数指定的宽度。 |
请注意,上述函数是在Python字符串上调用的方法。可以使用以下语法调用这些方法:
result = string.method_name(arguments)
其中,string
是你要处理的字符串,method_name
是方法的名称,arguments
是传递给该方法的参数(如果有的话)。请确保按照正确的语法和参数传递调用这些方法。