Python基本数据类型字符串操作总结

Posted Flyme awei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基本数据类型字符串操作总结相关的知识,希望对你有一定的参考价值。

🤵‍♂️ 个人主页: @Flyme awei 个主页
👨‍💻 作者简介:Python领域新星创作者。
📒 系列专栏:《在线编程-Python篇
🌐 推荐一款找工作神器网站: 《牛客网》 |笔试题库|面试经验|实习招聘内推|

🐋 希望大家多多支持😘一起进步呀!
📝 如果文章对你有帮助的话,欢迎评论 💬点赞 👍收藏 📂加关注

前言

  今天是《CSDN21天学习挑战赛》的第13天
  昨天学习Python组合数据类型——集合类型:集合
  今天学习Python基本数据类型——字符串

活动地址:CSDN21天学习挑战赛

文章目录

Python基本数据类型——字符串

字符串又称为字符序列,根据字符串的内容多少分为单行字符串多行字符串

单行字符串可以由一对单引号' '或一对双引号" "作为边界,单引号和双引号的作用相同。当使用单引号时双引号可以作为字符串的一部分,使用双引号时,单引号可以作为字符串的一部分。

多行字符串由一对三单引号''' '''或三双引号""" """作为边界来表示,二者作用相同。

一、字符串的驻留机制

1.字符串

字符串:Python基本数据类型:是一个不可变序列

2.什么叫字符串的驻留机制

仅保存一份相同且不可变字符串的方法,不同的值会被保存在字符串的驻留池中。

Python的驻留机制会对相同的字符串只保留一份拷贝,后续创建相同的字符串时,不会开辟新的空间,而是把字符串的地址付给新创建的变量。

# -*- coding: utf-8 -*-
# @File  : demo24.py
# @author: Flyme awei
# @email : 1071505897@qq.com
# @Time  : 2022/8/11 16:07


a = 'python'
b = "python"
c = '''python'''
print(a, id(a))
print(b, id(b))
print(c, id(c))

3.字符串驻留机制的几种情况(交互式)

  1. 字符串的长度为1
  2. 符合标识符的字符串(只包含字母,数字,下划线)
  3. 字符串只在编译是进行驻留,而非运行时
  4. [-5,256]之间的整数数字
>>> s1 = ''
>>> s2 = ''
>>> s1 is s2
True
>>>
>>> s1 = 'a'
>>> s2 = 'a'
>>> s1 is s2
True
>>>
>>> s1 = 'abc_def'
>>> s2 = 'abc_def'
>>> s1 is s2
True
>>> s1 = 'abc%def'
>>> s2 = 'abc%def'
>>> s1 == s2
True
>>> s1 is s2
False
>>>
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a == b
True
>>> 

4.强制2个字符串指向同一个对象

sys中的intern方法强制两个字符串指向同一个对象

'''sys中的intern方法强制两个字符串指向同一个对象'''
import sys
a = 'abc%'
b = 'abc%'
print(a is b)  # True
a = sys.intern(b)
print(id(a), id(b))  # 2989905230512 2989905230512

5. PyCharm对字符串进行了优化处理

6.字符串驻留机制的优缺点

  当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的。

  在需要进行字符串拼接时建议使用 str类型的join方法,而非+ ,因为join()方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率要比"+"效率高 。

二、字符串类型的操作

Pythonstr内置源码:

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__以上是关于Python基本数据类型字符串操作总结的主要内容,如果未能解决你的问题,请参考以下文章

Python基本数据类型——str

python 中str字符串 和list列表基本操作总结

python数据类型基础总结(字符串 列表 元组 字典 集合 )

Python基本数据类型与操作

0-python变量及基本数据类型

Python 基本类型:元组,列表,字典,字符串,集合 梳理总结