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”的索引如下图所示。

Python 字符串

请考虑以下示例:

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 字符串

在这里,我们必须注意切片操作符中给定的上限范围始终是不包括的,即如果给定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 字符串

考虑以下示例

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

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

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程