数据类型-字符串String


到目前为止,我们已经将数字作为python中的标准数据类型进行了实践。

在接下来的这一部分中,我们将讨论python中最流行的数据类型,即字符串。在python中,可以通过在引号中包含字符或字符序列来创建字符串。Python允许我们使用单引号,双引号或三引号来创建字符串。

在python中的可以根据以下示例来创建字符串。

str = "Hi Python !"

这里,如果我们使用python脚本检查变量str的类型,利用type()函数。

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

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

字符串索引和拆分

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

未命名图片.png

如python所示,slice operator []用于访问字符串的各个字符。但是,我们可以在python中使用:(冒号)运算符来访问子字符串。

通过以下示例来理解

未命2图片.png

在这里,我们必须注意切片运算符中给出的上限范围总是独占的,即,如果给出str ='python',则str [1:3]将始终包含str [1] ='p',str [2 ] ='y',str [3] ='t',没有别的。

重新分配字符串

更新字符串的内容就像将其分配给新字符串一样简单。字符串对象不支持项目分配,即字符串只能用新字符串替换,因为其内容不能被部分替换。字符串在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)

Output:


HELLO
hello

字符串运算符

运算符描述示例
+
它被称为连接运算符,用于连接运算符任一侧的字符串。

>>>a + b

'HelloPython'

*
它被称为重复运算符。它连接相同字符串的多个副本。

>>>a * 2

'HelloHello'

[]
它被称为切片操作符。它用于访问特定字符串的子字符串。

>>>a[1]

'e'

[:] 
它被称为范围切片运算符。它用于访问指定范围内的字符。

>>>a[1:4]

'ell'

in 
它被称为会员运营商。如果指定字符串中存在特定子字符串,则返回。

>>>"H" in a

True

Not in
它也是一个隶属运算符,并且与in完全相反。如果指定字符串中不存在特定的子字符串,则返回true。

>>>"M" not in a

True

r / R
它用于指定原始字符串。原始字符串用于我们需要打印转义字符的实际含义的情况,例如“C:// python”。要将任何字符串定义为原始字符串,字符r或R后跟字符串。

>>>print r'\n'

\n

>>> print R'\n'

\n

 它用于执行字符串格式化。它利用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

Output:


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

Python格式化运算符

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

请考虑以下示例。

Integer = 10;  
Float = 1.290  
String = "Ayush"  
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));

Output:


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


内置字符串功能

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

方法
描述
string.capitalize()
把字符串的第一个字符大写
string.center(width)
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
string.count(str, beg=0, end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
string.decode(encoding='UTF-8', errors='strict')
以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'
string.encode(encoding='UTF-8', errors='strict')

以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'


string.endswith(obj, beg=0, end=len(string))

检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.


string.expandtabs(tabsize=8)

把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。


string.find(str, beg=0, end=len(string))

检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1


string.format()
格式化字符串
string.index(str, beg=0, end=len(string))

跟find()方法一样,只不过如果str不在 string中会报一个异常.


string.isalnum()

如果 string 至少有一个字符并且所有字符都是字母或数字则返

回 True,否则返回 False
string.isalpha()

如果 string 至少有一个字符并且所有字符都是字母则返回 True,

否则返回 False
string.isdecimal()

如果 string 只包含十进制数字则返回 True 否则返回 False.


string.isdigit()

如果 string 只包含数字则返回 True 否则返回 False.


string.islower()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False


string.isnumeric()

如果 string 中只包含数字字符,则返回 True,否则返回 False


string.isspace()
如果 string 中只包含空格,则返回 True,否则返回 False.
string.istitle()

如果 string 是标题化的(见 title())则返回 True,否则返回 False


string.isupper()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False


string.join(seq)

以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串


string.ljust(width)

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串


string.lower()
转换 string 中所有大写字符为小写.
string.lstrip()
截掉 string 左边的空格
string.maketrans(intab, outtab])
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
max(str)
返回字符串 str 中最大的字母。
min(str)
返回字符串 str 中最小的字母。
string.partition(str)
有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
string.replace(str1, str2,  num=string.count(str1))
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
string.rfind(str, beg=0,end=len(string) )
类似于 find()函数,不过是从右边开始查找.
string.rindex( str, beg=0,end=len(string))
类似于 index(),不过是从右边开始.
string.rjust(width)
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.rpartition(str)
类似于 partition()函数,不过是从右边开始查找
string.rstrip()
删除 string 字符串末尾的空格.
string.split(str="", num=string.count(str))
以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串
string.splitlines([keepends])
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
string.startswith(obj, beg=0,end=len(string))

检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.


string.strip([obj])
在 string 上执行 lstrip()和 rstrip()
string.swapcase()
翻转 string 中的大小写
string.title()

返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())


string.translate(str, del="")
根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中
string.upper()转换 string 中的小写字母为大写
string.zfill(width)返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0