?♂️ 个人主页: @Flyme awei 个主页
?? 作者简介:Python
领域新星创作者。
? 系列专栏:《在线编程-Python篇》
? 推荐一款找工作神器
网站: 《牛客网》 |笔试题库
|面试经验
|实习招聘内推
|
? 希望大家多多支持?一起进步呀!
? 如果文章对你有帮助的话,欢迎评论 ?点赞 ?收藏 ?加关注
前言
今天是《CSDN21天学习挑战赛》的第13天
昨天学习Python组合数据类型——集合类型:集合
今天学习Python基本数据类型——字符串
活动地址:CSDN21天学习挑战赛
文章目录
前言Python基本数据类型——字符串一、字符串的驻留机制1.字符串2.什么叫字符串的驻留机制3.字符串驻留机制的几种情况(交互式)4.强制2个字符串指向同一个对象5. PyCharm对字符串进行了优化处理6.字符串驻留机制的优缺点 二、字符串类型的操作1.字符串操作符2.字符串处理函数3.字符串处理方法4.字符串的查询操作5.字符串大小写转换操作6.字符串内容对齐操作方法7.字符串的劈分操作8.判断字符串的方法9.字符串的替换与合并操作10.字符串的比较运算11.字符串的切片操作12.格式化字符串12.1为什么要格式化字符串12.2格式化字符串的三种方式 13.数值与字符串类型转换函数 三、字符串编码转换1.为什么要进行字符串编码转换2.编码与解码的方式 四、总结1.字符串操作符2.字符串处理函数3.字符串处理方法4.字符串的查询操作5.字符串大小写转换操作6.字符串内容对齐操作方法7.字符串的劈分操作8.判断字符串的方法9.字符串的替换与合并操作10.字符串的比较运算11.数值与字符串类型转换函数**`推 荐:牛客题霸-经典高频面试题库`**
Python基本数据类型——字符串
字符串又称为字符序列,根据字符串的内容多少分为单行字符串和多行字符串。
单行字符串可以由一对单引号' '
或一对双引号" "
作为边界,单引号和双引号的作用相同。当使用单引号时双引号可以作为字符串的一部分,使用双引号时,单引号可以作为字符串的一部分。
多行字符串由一对三单引号''' '''
或三双引号""" """
作为边界来表示,二者作用相同。
一、字符串的驻留机制
1.字符串
字符串:Python
基本数据类型:是一个不可变序列
2.什么叫字符串的驻留机制
仅保存一份相同且不可变字符串的方法,不同的值会被保存在字符串的驻留池中。
Python
的驻留机制会对相同的字符串只保留一份拷贝,后续创建相同的字符串时,不会开辟新的空间,而是把字符串的地址付给新创建的变量。
# -*- coding: utf-8 -*-# @File : demo24.py# @author: Flyme awei# @email : 1071505897@qq.com# @Time : 2022/8/11 16:07a = 'python'b = "python"c = '''python'''print(a, id(a))print(b, id(b))print(c, id(c))
3.字符串驻留机制的几种情况(交互式)
字符串的长度为
1
符合标识符的字符串(只包含字母,数字,下划线)字符串只在编译是进行驻留,而非运行时
[-5,256]
之间的整数数字
>>> s1 = ''>>> s2 = ''>>> s1 is s2True>>>>>> s1 = 'a'>>> s2 = 'a'>>> s1 is s2True>>>>>> s1 = 'abc_def'>>> s2 = 'abc_def'>>> s1 is s2True>>> s1 = 'abc%def'>>> s2 = 'abc%def'>>> s1 == s2True>>> s1 is s2False>>>>>> a = 256>>> b = 256>>> a is bTrue>>> a = 257>>> b = 257>>> a is bFalse>>> a == bTrue>>>
4.强制2个字符串指向同一个对象
sys
中的intern
方法强制两个字符串指向同一个对象
'''sys中的intern方法强制两个字符串指向同一个对象'''import sysa = 'abc%'b = 'abc%'print(a is b) # Truea = sys.intern(b)print(id(a), id(b)) # 2989905230512 2989905230512
5. PyCharm对字符串进行了优化处理
6.字符串驻留机制的优缺点
当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的。
在需要进行字符串拼接时建议使用 str
类型的join
方法,而非+
,因为join()
方法是先计算出所有字符中的长度,然后再拷贝,只new
一次对象,效率要比"+
"效率高 。
二、字符串类型的操作
Python
类str
内置源码:
class str(object): """ str = "(对象)——> str Str (bytes_or_buffer[, encoding[, errors]]) -> Str从给定的对象创建一个新的字符串对象。如果编码或,则对象必须公开数据缓冲区将使用给定的编码和错误处理程序进行解码。否则,返回object.__str__()的结果(如果已定义)或repr(对象)。编码默认为sys.getdefaultencoding()。Errors默认为'strict'。 """ def capitalize(self, *args, **kwargs): # real signature unknown """ Return a capitalized version of the string. More specifically, make the first character have upper case and the rest lower case. """ pass def casefold(self, *args, **kwargs): # real signature unknown """ Return a version of the string suitable for caseless comparisons. """ pass def center(self, *args, **kwargs): # real signature unknown """ 返回一个居中长度为width的字符串。 使用指定的填充字符(默认为空格)填充。 """ pass def count(self, sub, start=None, end=None): # real signature unknown; restored from __doc__ """ S.count(sub[, start[, end]]) -> int .count(sub[, start[, end]]返回子字符串sub in不重叠出现的次数 字符串(开始:结束)。可选参数start和end是用切片表示法解释。 """ return 0 def encode(self, *args, **kwargs): # real signature unknown """ Encode the string using the codec registered for encoding. encoding The encoding in which to encode the string. errors The error handling scheme to use for encoding errors. The default is 'strict' meaning that encoding errors raise a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and 'xmlcharrefreplace' as well as any other name registered with codecs.register_error that can handle UnicodeEncodeErrors. 使用注册用于编码的编解码器对字符串进行编码。 编码用于编码字符串的编码方式。错误用于编码错误的错误处理方案。默认值是'strict',意味着编码错误会引发UnicodeEncodeError。其他可能的值有'ignore', 'replace'和'xmlcharrefreplace'以及注册的任何其他名称编解码器。可以处理UnicodeEncodeErrors的register_error。 """ pass def endswith(self, suffix, start=None, end=None): # real signature unknown; restored from __doc__ """ S.endswith(suffix[, start[, end]]) -> bool Return True if S ends with the specified suffix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. suffix can also be a tuple of strings to try. """ return False def expandtabs(self, *args, **kwargs): # real signature unknown """ Return a copy where all tab characters are expanded using spaces. If tabsize is not given, a tab size of 8 characters is assumed. """ pass def find(self, sub, start=None, end=None): # real signature unknown; restored from __doc__ """ S.find(sub[, start[, end]]) -> int Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation. Return -1 on failure. S.find(sub[, start[, end]]) -> int 返回S中找到子串sub的最低下标,这样,sub包含在S[start:end]中。可选参数start和end被解释为切片表示法。失败时返回-1。 """ return 0 def format(self, *args, **kwargs): # known special case of str.format """ S.format(*args, **kwargs) -> str Return a formatted version of S, using substitutions from args and kwargs. The substitutions are identified by braces ('{' and '}'). S.format(*args, **kwargs) -> str 使用args和kwargs的替换,返回S的格式化版本。替换由大括号('{'和'}')标识。 """ pass def format_map(self, mapping): # real signature unknown; restored from __doc__ """ S.format_map(mapping) -> str Return a formatted version of S, using substitutions from mapping. The substitutions are identified by braces ('{' and '}'). """ return "" def index(self, sub, start=None, end=None): # real signature unknown; restored from __doc__ """ S.index(sub[, start[, end]]) -> int Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation. Raises ValueError when the substring is not found. S.index(sub[, start[, end]]) -> int .index(sub[, start[, end]]返回S中找到子串sub的最低下标,这样,sub包含在S[start:end]中。可选参数start和end被解释为切片表示法。当没有找到子字符串时引发ValueError。 """ return 0 def isalnum(self, *args, **kwargs): # real signature unknown """ Return True if the string is an alpha-numeric string, False otherwise. A string is alpha-numeric if all characters in the string are alpha-numeric and there is at least one character in the string. """ pass def isalpha(self, *args, **kwargs): # real signature unknown """ Return True if the string is an alphabetic string, False otherwise. A string is alphabetic if all characters in the string are alphabetic and there is at least one character in the string. """ pass def isascii(self, *args, **kwargs): # real signature unknown """ Return True if all characters in the string are ASCII, False otherwise. ASCII characters have code points in the range U+0000-U+007F. Empty string is ASCII too. """ pass def isdecimal(self, *args, **kwargs): # real signature unknown """ Return True if the string is a decimal string, False otherwise. A string is a decimal string if all characters in the string are decimal and there is at least one character in the string. """ pass def isdigit(self, *args, **kwargs): # real signature unknown """ Return True if the string is a digit string, False otherwise. A string is a digit string if all characters in the string are digits and there is at least one character in the string. """ pass def isidentifier(self, *args, **kwargs): # real signature unknown """ Return True if the string is a valid Python identifier, False otherwise. Call keyword.iskeyword(s) to test whether string s is a reserved identifier, such as "def" or "class". """ pass def islower(self, *args, **kwargs): # real signature unknown """ Return True if the string is a lowercase string, False otherwise. A string is lowercase if all cased characters in the string are lowercase and there is at least one cased character in the string. """ pass def isnumeric(self, *args, **kwargs): # real signature unknown """ Return True if the string is a numeric string, False otherwise. A string is numeric if all characters in the string are numeric and there is at least one character in the string. """ pass def isprintable(self, *args, **kwargs): # real signature unknown """ Return True if the string is printable, False otherwise. A string is printable if all of its characters are considered printable in repr() or if it is empty. """ pass def isspace(self, *args, **kwargs): # real signature unknown """ Return True if the string is a whitespace string, False otherwise. A string is whitespace if all characters in the string are whitespace and there is at least one character in the string. """ pass def istitle(self, *args, **kwargs): # real signature unknown """ Return True if the string is a title-cased string, False otherwise. In a title-cased string, upper- and title-case characters may only follow uncased characters and lowercase characters only cased ones. """ pass def isupper(self, *args, **kwargs): # real signature unknown """ Return True if the string is an uppercase string, False otherwise. A string is uppercase if all cased characters in the string are uppercase and there is at least one cased character in the string. """ pass def join(self, ab=None, pq=None, rs=None): # real signature unknown; restored from __doc__ """ Concatenate any number of strings. The string whose method is called is inserted in between each given string. The result is returned as a new string. Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs' 连接任意数量的字符串。 调用其方法的字符串被插入到每个给定字符串之间。结果以新字符串的形式返回。例如:“。”。Join (['ab', 'pq', 'rs']) -> 'ab.pq.rs' """ pass def ljust(self, *args, **kwargs): # real signature unknown """ Return a left-justified string of length width. Padding is done using the specified fill character (default is a space). 返回长度为width的左对齐字符串。 使用指定的填充字符(默认为空格)填充。 """ pass def lower(self, *args, **kwargs): # real signature unknown """ Return a copy of the string converted to lowercase. 返回转换为小写的字符串副本。""" pass def lstrip(self, *args, **kwargs): # real signature unknown """ Return a copy of the string with leading whitespace removed. If chars is given and not None, remove characters in chars instead. 返回删除前导空格的字符串副本。 如果给出了chars而不是None,则删除chars中的字符。 """ pass def maketrans(self, *args, **kwargs): # real signature unknown """ Return a translation table usable for str.translate(). If there is only one argument, it must be a dictionary mapping Unicode ordinals (integers) or characters to Unicode ordinals, strings or None. Character keys will be then converted to ordinals. If there are two arguments, they must be strings of equal length, and in the resulting dictionary, each character in x will be mapped to the character at the same position in y. If there is a third argument, it must be a string, whose characters will be mapped to None in the result. """ pass def partition(self, *args, **kwargs): # real signature unknown """ Partition the string into three parts using the given separator. This will search for the separator in the string. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it. If the separator is not found, returns a 3-tuple containing the original string and two empty strings. """ pass def replace(self, *args, **kwargs): # real signature unknown """ Return a copy with all occurrences of substring old replaced by new. count Maximum number of occurrences to replace. -1 (the default value) means replace all occurrences. If the optional argument count is given, only the first count occurrences are replaced. 返回一个副本,其中所有出现的子字符串old都被new替换。 数替换的最大次数。-1(默认值)表示替换所有匹配项。如果给出了可选参数count,则只出现第一个count更换。 """ pass def rfind(self, sub, start=None, end=None): # real signature unknown; restored from __doc__ """ S.rfind(sub[, start[, end]]) -> int Return the highest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation. Return -1 on failure. """ return 0 def rindex(self, sub, start=None, end=None): # real signature unknown; restored from __doc__ """ S.rindex(sub[, start[, end]]) -> int Return the highest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation. Raises ValueError when the substring is not found. """ return 0 def rjust(self, *args, **kwargs): # real signature unknown """ Return a right-justified string of length width. Padding is done using the specified fill character (default is a space). 返回长度为width的右对齐字符串。 使用指定的填充字符(默认为空格)填充。 """ pass def rpartition(self, *args, **kwargs): # real signature unknown """ Partition the string into three parts using the given separator. This will search for the separator in the string, starting at the end. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it. If the separator is not found, returns a 3-tuple containing two empty strings and the original string. """ pass def rsplit(self, *args, **kwargs): # real signature unknown """ Return a list of the words in the string, using sep as the delimiter string. sep The delimiter according which to split the string. None (the default value) means split according to any whitespace, and discard empty strings from the result. maxsplit Maximum number of splits to do. -1 (the default value) means no limit. Splits are done starting at the end of the string and working to the front. 返回字符串中的单词列表,使用sep作为分隔符字符串。sep 用来分割字符串的分隔符。 None(默认值)表示根据任何空格进行分割,并从结果中丢弃空字符串。maxsplit 最大分割次数。 -1(默认值)表示无限制。 劈叉从绳子的末端开始,一直到前面。 """ pass def rstrip(self, *args, **kwargs): # real signature unknown """ Return a copy of the string with trailing whitespace removed. If chars is given and not None, remove characters in chars instead. 返回字符串的副本,删除尾随空格。 如果给出了chars而不是None,则删除chars中的字符。 """ pass def split(self, *args, **kwargs): # real signature unknown """ Return a list of the words in the string, using sep as the delimiter string. sep The delimiter according which to split the string. None (the default value) means split according to any whitespace, and discard empty strings from the result. maxsplit Maximum number of splits to do. -1 (the default value) means no limit. """ pass def splitlines(self, *args, **kwargs): # real signature unknown """ Return a list of the lines in the string, breaking at line boundaries. Line breaks are not included in the resulting list unless keepends is given and true. """ pass def startswith(self, prefix, start=None, end=None): # real signature unknown; restored from __doc__ """ S.startswith(prefix[, start[, end]]) -> bool Return True if S starts with the specified prefix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. prefix can also be a tuple of strings to try. """ return False def strip(self, *args, **kwargs): # real signature unknown """ Return a copy of the string with leading and trailing whitespace removed. If chars is given and not None, remove characters in chars instead. 返回删除前导和尾随空格的字符串副本。 如果给出了chars而不是None,则删除chars中的字符。 """ pass def swapcase(self, *args, **kwargs): # real signature unknown """ Convert uppercase characters to lowercase and lowercase characters to uppercase. """ pass def title(self, *args, **kwargs): # real signature unknown """ Return a version of the string where each word is titlecased. More specifically, words start with uppercased characters and all remaining cased characters have lower case. """ pass def translate(self, *args, **kwargs): # real signature unknown """ Replace each character in the string using the given translation table. table Translation table, which must be a mapping of Unicode ordinals to Unicode ordinals, strings, or None. The table must implement lookup/indexing via __getitem__, for instance a dictionary or list. If this operation raises LookupError, the character is left untouched. Characters mapped to None are deleted. """ pass def upper(self, *args, **kwargs): # real signature unknown """ Return a copy of the string converted to uppercase. """ pass def zfill(self, *args, **kwargs): # real signature unknown """ Pad a numeric string with zeros on the left, to fill a field of the given width. The string is never truncated. """ pass def __add__(self, *args, **kwargs): # real signature unknown """ Return self+value. """ pass def __contains__(self, *args, **kwargs): # real signature unknown """ Return key in self. """ pass def __eq__(self, *args, **kwargs): # real signature unknown """ Return self==value. """ pass def __format__(self, *args, **kwargs): # real signature unknown """ Return a formatted version of the string as described by format_spec. """ pass def __getattribute__(self, *args, **kwargs): # real signature unknown """ Return getattr(self, name). """ pass def __getitem__(self, *args, **kwargs): # real signature unknown """ Return self[key]. """ pass def __getnewargs__(self, *args, **kwargs): # real signature unknown pass def __ge__(self, *args, **kwargs): # real signature unknown """ Return self>=value. """ pass def __gt__(self, *args, **kwargs): # real signature unknown """ Return self>value. """ pass def __hash__(self, *args, **kwargs): # real signature unknown """ Return hash(self). """ pass def __init__(self, value='', encoding=None, errors='strict'): # known special case of str.__init__ """ str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'. # (copied from class doc) """ pass def __iter__(self, *args, **kwargs): # real signature unknown """ Implement iter(self). """ pass def __len__(self, *args, **kwargs): # real signature unknown """ Return len(self). """ pass def __le__(self, *args, **kwargs): # real signature unknown """ Return self<=value. """ pass def __lt__(self, *args, **kwargs): # real signature unknown """ Return self<value. """ pass def __mod__(self, *args, **kwargs): # real signature unknown """ Return self%value. """ pass def __mul__(self, *args, **kwargs): # real signature unknown """ Return self*value. """ pass @staticmethod # known case of __new__ def __new__(*args, **kwargs): # real signature unknown """ Create and return a new object. See help(type) for accurate signature. """ pass def __ne__(self, *args, **kwargs): # real signature unknown """ Return self!=value. """ pass def __repr__(self, *args, **kwargs): # real signature unknown """ Return repr(self). """ pass def __rmod__(self, *args, **kwargs): # real signature unknown """ Return value%self. """ pass def __rmul__(self, *args, **kwargs): # real signature unknown """ Return value*self. """ pass def __sizeof__(self, *args, **kwargs): # real signature unknown """ Return the size of the string in memory, in bytes. """ pass def __str__(self, *args, **kwargs): # real signature unknown """ Return str(self). """ pass
1.字符串操作符
操作符 | 描述 |
---|
+ | x+y ,连接两个字符串x 和y |
* | x*n 或n*x ,复制n次字符串x |
in | x in s ,如果x 是s 的字串,返回True ,否则返回False |
2.字符串处理函数
函数 | 描述 |
---|
len(x) | 返回字符串x 的长度,也可返回其它组合数据类型元素的个数 |
str(x) | 返回任意类型x 所对应的字符串形式 |
char(x) | 返回Unicode 编码x 对应的单字符 |
ord(x) | 返回x表示的Unicode编码 |
hex(x) | 返回整数x 对应十六进制 的小写形式字符串 |
oct(x) | 返回整数x 对应八进制 的小写形式字符串 |
3.字符串处理方法
方法 | 描述 |
---|
s.lower() | 字符串s 全部转为小写 |
s.upper( ) | 字符串s 全部转为大写 |
s.split(sep=None) | 返回一个列表,由s 根据sep 被分割的部分构成,省略sep 默认以空格 分割 |
s.count(sub) | 返回字串sub 出现的次数 |
s.replace(old, new) | 返回字符串s 的副本,所有old 字串被替换为new |
s.center(width, fillchar) | 字符串居中函数,fillchar 参数可选 |
s.strip(chars) | 从字符串s 中去掉咋其左侧和右侧chars 中出现的字符 |
s.join(iter) | 将iter 变量的每一个元素增加一个s 字符串 |
4.字符串的查询操作
方法名称 | 作用 |
---|
index() | 查找字串substr 第一次出现的位置,如果查找的字串不存在,抛ValueError 异常 |
rindex() | 查找字串substr 最后一次出现的位置,如果查找的字串不存在,抛ValueError 异常 |
find() | 查找字串substr 第一次出现的位置,如果查找的字串不存在,返回-1 |
rfind() | 查找字串substr 最后一次出现的位置,如果查找的字串不存在,返回-1 |
'''index()查找第一次出现的位置 抛异常rindex()查找最后一次次出现的位置 抛异常find()查找第一次出现的位置 不抛异常,返回值为-1rfind()查找最后一次出现的位置 抛异常'''s = 'hello,hello'print(s.index('o'))print(s.rindex('o'))print(s.find('lo'))print(s.find('ui')) # -1
5.字符串大小写转换操作
方法 | 作用 |
---|
upper() | 把所有的字符串转换为大写 字母 |
lower() | 把所有的字符串转换为小写 字母 |
swapcase() | 将大写 字符转换为小写 字符,将小写 字符转换为大写 字符。 |
capitalize() | 使第一个字符 为大写 字母,其余字符为小写字母 |
title() | 返回字符串的一个版本,其中每个单词都有标题。更具体地说,单词以大写字母开头,其余都以大写字母开头区分大小写的字符小写。 |
# 字符串的大小写转换# 1.upper()把字符串中的所有字符转为大写# 2.lower()把字符串中的所有字符都转换为小写# 3.swap case() 大转小,小转大# 4.capitalize()把第一个字符转为大写,其余字符转为小写# 5.title()把字符串首字母转换为大写,把剩余的转换为小写s = 'hellopython'print(s.upper()) # 转大写print(s.lower()) # 转换后id改变,会产生一个新的空间print(s.swapcase())print(s.capitalize())print(s.title())
6.字符串内容对齐操作方法
方法 | 作用 |
---|
center(width,'') | 返回一个居中长度为width 的字符串。使用指定的填充字符(默认为空格)填充。 |
ljust(width,' ') | 返回长度为width 的左对齐字符串。使用指定的填充字符(默认为空格)填充。 |
rjust(width,' ') | 返回长度为width 的右对齐字符串。使用指定的填充字符(默认为空格)填充。 |
zfill('int') | 在左侧填充数字字符串 ,以填充给定宽度的字段。字符串永远不会被截断。 |
'''字符串的对其操作'''# 1.center 居中对齐s = 'hello,python'print(s.center(100, '*'))# 2.ljust 左对齐print(s.ljust(100, '*'))# 3.rjust 右对齐print(s.rjust(100, '*'))# 3.zfill 右对齐,左侧为0填充print(s.zfill(100))
7.字符串的劈分操作
方法 | 作用 |
---|
split() | 返回字符串中的单词列表,使用sep 作为分隔符字符串。sep 用来分割字符串的分隔符。None(默认值)表示根据任何空格进行分割,并从结果中丢弃空字符串。maxsplit 最大分割次数。-1 (默认值)表示无限制。 |
rsplit() | 返回字符串中的单词列表,使用sep 作为分隔符字符串。sep 用来分割字符串的分隔符。None (默认值)表示根据任何空格进行分割,并从结果中丢弃空字符串。maxsplit 最大分割次数。-1 (默认值)表示无限制。劈叉从绳子的末端 开始,一直到前面。 |
# 字符串的劈分操作 split# 1. split从字符串左侧开始分割,默认值为空格字符串,返回值是一个列表# 以通过参数sep指定劈分字符串是劈分符# 通过maxsplit指定劈分字符串的最大劈分次数s = 'hello#world#python'lst = s.split('#')print(lst)s1 = 'hello|world|python'print(s1.split())print(s1.split(sep='|'))print(s1.split())s1 = 'hello|world|python'print(s1.split())print(s1.split(sep='|', maxsplit=1))# 以参数sep 指定劈分字符串是劈分符print('-----------------------')# 2.rsplit 从右侧开始劈分print(s1.rsplit(sep='|', maxsplit=1))
8.判断字符串的方法
方法 | 作用 |
---|
isidentifier() | 判断字符串是合法标识符 |
isspace() | 判断字符串是否全部由空字符串组成(回车,换行,水平制表) |
isalpha() | 判断是否全部由字符组成 |
isdecimal() | 判断是否全部由十进制数字组成 |
isnumeric() | 判断是否全部由数字组成 |
isalnum() | 判断字符串是否全部由字母和数字组成 |
# 1. isidentifier 判断字符串是合法标识符s = 'hello, python'print('1.', s.isidentifier()) # Falseprint('2.', 'hello'.isidentifier()) # True# 2. isspase 判断字符串是否全部由空字符串组成(回车,换行,水平制表)print(' '.isspace())print('-----------------------')# 3. isalpha 判断是否全部由字符组成print('fhaisdfh'.isalpha())# 4. isnumeric 判断是否全部由数字组成print('67867'.isnumeric())# 5. isdecimal 判断是否全部由十进制数字组成print('78'.isdecimal())# 6. iszlnum 判断字符串是否全部由字母和数字组成print('yut6786'.isalnum())
9.字符串的替换与合并操作
方法 | 作用 |
---|
replace() | 返回一个副本,其中所有出现的子字符串old 都被new 替换。count 替换的最大次数。-1 (默认值)表示替换所有匹配项。如果给出了可选参数count ,则只出现第一个count 更换。 |
join() | 连接任意数量的字符串。调用其方法的字符串被插入到每个给定字符串之间。结果以新字符串的形式返回。例如: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs' |
# 1.字符串的替换 replace()s = 'hello,Python'print(s.replace('Python', 'java'))s1 = 'hello,python,python,python'print(s1.replace('python', 'java', 2)) # 通过第三个参数指定最大替换次数# 2.字符串合并 join() 将列表或元组中字符串合并成一个字符串lst = ['hello', 'java', 'python']print('|'.join(lst))print(''.join(lst))t = ('hello', 'java', 'python')print(''.join(t))
10.字符串的比较运算
两个字符串进行比较时,比较的是ordinal value
(原始值) ,如果相等则继续比较下一个字符,知道两个字符串不相等
运算符 | 含义 |
---|
> | 大于 |
< | 小于 |
== | 等于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
# 字符窜的比较# 运算符 > < == <= >= !=print('apple' > 'app') # Trueprint('apple' > 'banana')'''调用内置函数ord可以得到指定字符的ordinal value '''print(ord('a'), ord('b'))print(ord('刘'), ord('张'))'''== 与 is 的区别'''# == 比较的是 value# is 比较的是 ida = b = 'pthon'print(a is b)print(a == b)
11.字符串的切片操作
对字符串中某个子串或区间的检索称为切片。
语法如下:
字符串或字符串变量[N:M]
切片获取字符串N
到M
(不包含M
)的子字符串,其中,N
和M
为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。切片要求N
和M
都在字符串的索引区间,如果N
大于M
,则返回空字符串。如果N
缺失,则默认将N
设为0
;如果M
缺失,则默认表示到字符串结尾。
# 字符串的切片操作# 字符串是不可变类型 不能进行 增 删 改 操作# 切片将产生新的对象s = 'hello,python'# print(s[start : end : step])print(s[3])print(s[:3])print(s[:3:2])print(s[::-1]) # 默认从字符串最后一个语速开始切,到字符串第一个元素结束
12.格式化字符串
12.1为什么要格式化字符串
在字符串中整合变量是需要使用字符串的格式化方法。
字符串格式化用于解决字符串和变量同时输出的格式安排问题。
12.2格式化字符串的三种方式
%
作为占位符
{}
作为占位符’'.format()
f
‘我叫
%s
,今年
%d
岁了’
%s
占了一个字符串
%d
占了一个整数
s = "python"
<填充><对齐><宽度>
符号 | 描述 |
---|
{:25}.format(s) | 默认左对齐 |
{:1}.format(s) | 指定宽度为1 ,不足变量s 的宽度,以实际变量宽度为准 |
{:^25}.format(s) | 居中对齐 |
{:>25}.format(s) | 右对齐 |
{:*^25}.format(s) | 居中对齐,填充* 号 |
{:+^25}.format(s) | 居中对齐填充+ 号 |
{:^1}.format(s) | 指定宽度为1 ,不足变量s 的宽度,以实际变量宽度为准 |
<,><.精度><类型>
,其中,逗号
(,)
用于显示数字类型的千分位分隔符。
符号 | 描述 |
---|
"{:-^25,}".format(1234567890) | '------1,234,567,890------' |
"{0:-^25}".format(1234567890) | '-------1234567890--------' |
<.精度>
有小数点
(.)
开头。
符号 | 描述 |
---|
"{:2f}".format(12345.6788890) | '12345.67' |
"{:25.3f}".format(12345.67890) | ' 12345.679' |
"{:.5}".format("123456789") | '12345 ’ |
"{:.15)".format('123456789') | '123456789' |
# 格式化字符串name = '张三'age = 20print('我叫%s,今年%d岁了' % (name, age)) # % 作为占位符print('我的名字是{0},我今年{1}岁了'.format(name, age)) # {} 作为占位符print(f'我叫{name},今年{age}岁')# 表示宽度 %10dprint('%10d' % 99)# 表示小数点位数 %.nf 精度 :.nprint('%.3f' % 3.78234685) # 三位小数print('{:.3}'.format(3.34638567)) # 三位有效数字
13.数值与字符串类型转换函数
函数 | 描述 |
---|
int(x) | 将x 转换为整数,x 可以是浮点数或数字类字符串 |
folat(x) | 将x 转换为浮点数,x 可以是整数或数字类字符串 |
str(x ) | 将x 转换为整数,x 可以是整数或浮点数 |
三、字符串编码转换
1.为什么要进行字符串编码转换
2.编码与解码的方式
编码:s.encode()
将字符串转换为二进制
数据(bytes
)
解码:s.decode()
将bytes
类型的数据转换成字符串类型
s = '人生苦短,我用Python!'# 编码print(s.encode(encoding='utf_8')) # utf-8 一个中文占两个字节print(s.encode(encoding='GBK')) # GBK 一个中文占三个字节# 解码byte = s.encode(encoding='GBK') # 编码print(byte.decode(encoding='GBK')) # 解码# 编码和解码格式要相同
四、总结
1.字符串操作符
操作符 | 描述 |
---|
+ | x+y ,连接两个字符串x 和y |
* | x*n 或n*x ,复制n次字符串x |
in | x in s ,如果x 是s 的字串,返回True ,否则返回False |
2.字符串处理函数
函数 | 描述 |
---|
len(x) | 返回字符串x 的长度,也可返回其它组合数据类型元素的个数 |
str(x) | 返回任意类型x 所对应的字符串形式 |
char(x) | 返回Unicode 编码x 对应的单字符 |
ord(x) | 返回x表示的Unicode编码 |
hex(x) | 返回整数x 对应十六进制 的小写形式字符串 |
oct(x) | 返回整数x 对应八进制 的小写形式字符串 |
3.字符串处理方法
方法 | 描述 |
---|
s.lower() | 字符串s 全部转为小写 |
s.upper( ) | 字符串s 全部转为大写 |
s.split(sep=None) | 返回一个列表,由s 根据sep 被分割的部分构成,省略sep 默认以空格 分割 |
s.count(sub) | 返回字串sub 出现的次数 |
s.replace(old, new) | 返回字符串s 的副本,所有old 字串被替换为new |
s.center(width, fillchar) | 字符串居中函数,fillchar 参数可选 |
s.strip(chars) | 从字符串s 中去掉咋其左侧和右侧chars 中出现的字符 |
s.join(iter) | 将iter 变量的每一个元素增加一个s 字符串 |
4.字符串的查询操作
方法名称 | 作用 |
---|
index() | 查找字串substr 第一次出现的位置,如果查找的字串不存在,抛ValueError 异常 |
rindex() | 查找字串substr 最后一次出现的位置,如果查找的字串不存在,抛ValueError 异常 |
find() | 查找字串substr 第一次出现的位置,如果查找的字串不存在,返回-1 |
rfind() | 查找字串substr 最后一次出现的位置,如果查找的字串不存在,返回-1 |
5.字符串大小写转换操作
方法 | 作用 |
---|
upper() | 把所有的字符串转换为大写 字母 |
lower() | 把所有的字符串转换为小写 字母 |
swapcase() | 将大写 字符转换为小写 字符,将小写 字符转换为大写 字符。 |
capitalize() | 使第一个字符 为大写 字母,其余字符为小写字母 |
title() | 返回字符串的一个版本,其中每个单词都有标题。更具体地说,单词以大写字母开头,其余都以大写字母开头区分大小写的字符小写。 |
6.字符串内容对齐操作方法
方法 | 作用 |
---|
center(width,'') | 返回一个居中长度为width 的字符串。使用指定的填充字符(默认为空格)填充。 |
ljust(width,' ') | 返回长度为width 的左对齐字符串。使用指定的填充字符(默认为空格)填充。 |
rjust(width,' ') | 返回长度为width 的右对齐字符串。使用指定的填充字符(默认为空格)填充。 |
zfill('int') | 在左侧填充数字字符串 ,以填充给定宽度的字段。字符串永远不会被截断。 |
7.字符串的劈分操作
方法 | 作用 |
---|
split() | 返回字符串中的单词列表,使用sep 作为分隔符字符串。sep 用来分割字符串的分隔符。None(默认值)表示根据任何空格进行分割,并从结果中丢弃空字符串。maxsplit 最大分割次数。-1 (默认值)表示无限制。 |
rsplit() | 返回字符串中的单词列表,使用sep 作为分隔符字符串。sep 用来分割字符串的分隔符。None (默认值)表示根据任何空格进行分割,并从结果中丢弃空字符串。maxsplit 最大分割次数。-1 (默认值)表示无限制。劈叉从绳子的末端 开始,一直到前面。 |
8.判断字符串的方法
方法 | 作用 |
---|
isidentifier() | 判断字符串是合法标识符 |
isspace() | 判断字符串是否全部由空字符串组成(回车,换行,水平制表) |
isalpha() | 判断是否全部由字符组成 |
isdecimal() | 判断是否全部由十进制数字组成 |
isnumeric() | 判断是否全部由数字组成 |
isalnum() | 判断字符串是否全部由字母和数字组成 |
9.字符串的替换与合并操作
方法 | 作用 |
---|
replace() | 返回一个副本,其中所有出现的子字符串old 都被new 替换。count 替换的最大次数。-1 (默认值)表示替换所有匹配项。如果给出了可选参数count ,则只出现第一个count 更换。 |
join() | 连接任意数量的字符串。调用其方法的字符串被插入到每个给定字符串之间。结果以新字符串的形式返回。例如: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs' |
10.字符串的比较运算
运算符 | 含义 |
---|
> | 大于 |
< | 小于 |
== | 等于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
11.数值与字符串类型转换函数
函数 | 描述 |
---|
int(x) | 将x 转换为整数,x 可以是浮点数或数字类字符串 |
folat(x) | 将x 转换为浮点数,x 可以是整数或数字类字符串 |
str(x ) | 将x 转换为整数,x 可以是整数或浮点数 |
推 荐:牛客题霸-经典高频面试题库
? 找工作神器-|笔试题库|面试经验|大厂面试题
? 点击链接进行注册学习