Python3 - String(字符串)

Python3 - String(字符串) 首页 / Python3入门教程 / Python3 - String(字符串)

到目前为止,无涯教程已经讨论了数字作为Python中的标准数据类型。在本教程的这一部分中,将讨论Python中最流行的数据类型,即String字符串。

Python字符串是由单引号,双引号或三引号引起来的字符的集合,每个字符均以ASCII或Unicode字符编码。因此,可以说Python字符串也称为Unicode字符集合。

考虑下面的Python示例创建字符串。

str = "Hi Python !"  

在这里,如果使用Python脚本检查变量 str 的类型

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

在Python中,字符串被视为字符序列,这意味着Python不支持字符数据类型。而是将写为'p'的单个字符视为长度为1的字符串。

无涯教程网

创建字符串

可以通过将字符括在单引号或双引号中来创建字符串。 Python还提供了三引号来表示字符串,但通常用于多行字符串或 docstrings

#使用单引号
str1 = 'Hello Python'
print(str1)
#使用双引号
str2 = "Hello Python"
print(str2)

#使用三引号
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])
# 它返回 IndexError 因为第 6 个索引不存在
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'。

考虑以下示例:

# 给定字符串
str = "JAVATPOINT"
# 从第 O 个索引开始到结束
print(str[0:])
# 从第 1 个索引开始到第 4 个索引
print(str[1:5])
# 从第 2 个索引开始到第 3 个索引
print(str[2:4])
# 从第 0 到第 2 索引开始
print(str[:3])
#开始第 4 到第 6 索引
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])
# 反转给定的字符串
print(str[::-1])
print(str[-12])

输出:

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

重新分配字符串

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

考虑下面的例子.

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 完全分配给以下示例中指定的新内容。

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

输出:

HELLO
hello  

删除字符串

无涯教程知道字符串是不可变的。因此无法删除或删除字符串中的字符。但是可以使用 del 关键字删除整个字符串。

str = "LEARNFK"
del str[1]

输出:

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

现在要删除整个字符串。

str1 = "LEARNFK"
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) # 打印 HelloHelloHello
print(str+str1)# prints Hello world   
print(str[4]) # prints o              
print(str[2:4]); # prints ll                  
print('w' in str) # 打印 false 因为 w 在 str 中不存在 
print('wo' not in str1) # 打印 false 因为 wo 存在于 str1 中。
print(r'C://python37') # 在编写时打印 C://python37
print("The string str : %s"%(str)) #打印字符串 str : Hello

输出:

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

字符串格式

假设需要将文本编写为-They said,"Hello what's going on? "-给定的语句可以用单引号或双引号写成,但是会引起 SyntaxError ,因为它包含两个单引号和双引号。

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

输出:

SyntaxError: invalid syntax

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

反斜杠(/)符号表示转义序列。反斜杠后面可以跟一个特殊字符,字符串中的单引号必须转义。可以使用与双引号相同的方法。

# 使用三引号
print('''They said, "What's there?"''')

# 转义单引号
print('They said, "What\'s going on?"')

# 转义双引号
print("They said, \"What's going on?\"")

输出:

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

下面给出了转义序列的列表:

Sr.转义序列Description
1.\newline它忽略新行。
print("Python1 \
Python2 \
Python3")
输出:
Python1 Python2 Python3
2.\\反斜杆
print("\\")
输出:
\
3.\'单引号
print('\'')
输出:
'
4.\\''双引号
print("\"")
输出:
"
5.\aASCII Bell
print("\a")
6.\bASCII Backspace(BS)
print("Hello \b World")
输出:
Hello World
7.\fASCII Formfeed
print("Hello \f World!")
Hello  World!
8.\nASCII Linefeed
print("Hello \n World!")
输出:
Hello
 World!
9.\rASCII Carriege Return(CR)
print("Hello \r World!")
输出:
World!
10.\tASCII Horizontal Tab
print("Hello \t World!")
输出:
Hello 	 World!
11.\vASCII Vertical Tab
print("Hello \v World!")
输出:
Hello 
 World!
12.\oooCharacter with octal value
print("\110\145\154\154\157")
输出:
Hello
13\xHHCharacter with hex value.
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来做到这一点。考虑下面的例子.

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

输出:

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

format()方法

format()方法是格式化字符串时最灵活,最有用的方法。花括号{}用作字符串中的占位符,并由 format()方法参数代替。看一个给定的例子:

# 使用花括号
print("{} and {} both are the best friend".format("Devansh","Abhishek"))

# 数字占位
print("{1} and {0} best players ".format("Virat","Rohit"))

# 关键字参数
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允许使用 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

String 函数

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

方法说明
capitalize()它大写字符串的第一个字符。 python3不推荐使用此函数
casefold()它返回适用于无大小写比较的的版本。
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()如果所有字符都是字母并且至少有一个字符,则返回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,则返回true,否则返回false。
join(seq)它将合并给定序列的字符串表示形式。
len(string)它返回字符串的长度。
ljust(width [fillchar])它返回空格填充的字符串,其中原始字符串左对齐到给定的宽度。
lower()它将字符串的所有字符转换为Low
lstrip()它将删除字符串中的所有前导空格,也可以用于删除前导中的特定字符。
partition()它将搜索S中的分隔符sep,并返回它之前的部分,分隔符本身以及之后的部分。如果找不到分隔符,则返回S和两个空字符串。
maketrans()它返回要在翻译函数中使用的翻译表。
replace(old,new[,count])它将旧字符序列替换为新序列。如果给出max,则替换max字符。
rfind(str,beg = 0,end = len(str))与find类似,但它在backwa中遍历字符串rd方向。
rindex(str,beg = 0,end = len(str))与index相同,但它以反向方向遍历字符串。
rjust(width,[fillchar])返回一个空格填充的字符串,该字符串的原始字符串右对齐至指定的字符数。
rstrip()它将删除字符串的所有结尾空格,也可以用于删除结尾的特定字符。
rsplit(sep = None,maxsplit = -1)与split()相同,但是它从反方向处理字符串。它返回字符串中的单词列表。如果未指定Separator,则字符串将根据空格进行分割。
split(str,num = string.count(str))根据定界符str分割字符串。如果未提供定界符,则字符串将根据空格进行拆分。它返回与定界符连接的子字符串列表。
splitlines(num = string.count('\n'))它返回每行删除了换行符的字符串列表。
startswith(str,beg = 0,end = len(str))如果字符串在begin和end之间以给定的str开头,则返回布尔值。
strip([chars])它用于对字符串执行lstrip()和rstrip()。
swapcase()它会反转字符串中所有字符的大小写。
title()用于将字符串转换为title-ca例如,字符串 meEruT 将转换为Meerut。
translate(table,deletechars ='')它将根据函数中传递的转换表转换字符串。
upper()它将字符串的所有字符转换为大写。
zfill(width)返回用零补齐的原始字符串,以总计宽度字符;用于数字,zfill()保留给定的任何符号(小于1的零)。
rpartition()

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品手记 -〔邱岳〕

从0开始学游戏开发 -〔蔡能〕

数据结构与算法之美 -〔王争〕

iOS开发高手课 -〔戴铭〕

现代C++编程实战 -〔吴咏炜〕

Vim 实用技巧必知必会 -〔吴咏炜〕

如何读懂一首诗 -〔王天博〕

反爬虫兵法演绎20讲 -〔DS Hunter〕

人人都用得上的数字化思维课 -〔付晓岩〕

好记忆不如烂笔头。留下您的足迹吧 :)