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
- 符合标识符的字符串(只包含字母,数字,下划线)
- 字符串只在编译是进行驻留,而非运行时
[-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
一次对象,效率要比"+
"效率高 。
二、字符串类型的操作
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()查找第一次出现的位置 不抛异常,返回值为-1
rfind()查找最后一次出现的位置 抛异常
'''
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()) # False
print('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') # True
print('apple' > 'banana')
'''调用内置函数ord可以得到指定字符的ordinal value '''
print(ord('a'), ord('b'))
print(ord('刘'), ord('张'))
'''== 与 is 的区别'''
# == 比较的是 value
# is 比较的是 id
a = 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 = 20
print('我叫%s,今年%d岁了' % (name, age)) # % 作为占位符
print('我的名字是{0},我今年{1}岁了'.format(name, age)) # {} 作为占位符
print(f'我叫{name},今年{age}岁')
# 表示宽度 %10d
print('%10d' % 99)
# 表示小数点位数 %.nf 精度 :.n
print('%.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')) # 解码
# 编码和解码格式要相同