到目前为止,无涯教程已经讨论了数字作为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"进行了索引。
考虑以下示例:
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中使用:(冒号)运算符来访问给定字符串中的子字符串。
在这里,无涯教程必须注意,切片运算符中给出的上限始终是互斥的,即,如果给出了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中是不可变的。
考虑下面的例子.
输出:
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 完全分配给以下示例中指定的新内容。
输出:
HELLO hello
无涯教程知道字符串是不可变的。因此无法删除或删除字符串中的字符。但是可以使用 del 关键字删除整个字符串。
输出:
TypeError: 'str' object doesn't support item deletion
现在要删除整个字符串。
输出:
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 ,因为它包含两个单引号和双引号。
输出:
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. | \a | ASCII Bell | print("\a") |
6. | \b | ASCII Backspace(BS) | print("Hello \b World")输出: Hello World |
7. | \f | ASCII Formfeed | print("Hello \f World!") Hello World! |
8. | \n | ASCII Linefeed | print("Hello \n World!")输出: Hello World! |
9. | \r | ASCII Carriege Return(CR) | print("Hello \r World!")输出: World! |
10. | \t | ASCII Horizontal Tab | print("Hello \t World!")输出: Hello World! |
11. | \v | ASCII Vertical Tab | print("Hello \v World!")输出: Hello World! |
12. | \ooo | Character with octal value | print("\110\145\154\154\157")输出: Hello |
13 | \xHH | Character 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来做到这一点。考虑下面的例子.
输出:
C:\\Users\\DEVANSH SHARMA\\Python32
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
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() |
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)