数据类型-字符串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”的索引如下图所示。
如python所示,slice operator []用于访问字符串的各个字符。但是,我们可以在python中使用:(冒号)运算符来访问子字符串。
通过以下示例来理解
在这里,我们必须注意切片运算符中给出的上限范围总是独占的,即,如果给出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 |