iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 的内置字符串方法小结
  • 492
分享到

Python 的内置字符串方法小结

小结字符串方法 2022-06-04 19:06:26 492人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

字符串处理是非常常用的技能,但 python 内置字符串方法太多,常常遗忘,为了便于快速参考,特地依据 Python 3.5.1 给每个内置方法写了示例并进行了归类,便于大家索引。 PS: 可以点击概览内

字符串处理是非常常用的技能,但 python 内置字符串方法太多,常常遗忘,为了便于快速参考,特地依据 Python 3.5.1 给每个内置方法写了示例并进行了归类,便于大家索引

PS: 可以点击概览内的绿色标题进入相应分类或者通过右侧边栏文章目录快速索引相应方法。

大小写转换

str.capitalize()

将首字母转换成大写,需要注意的是如果首字没有大写形式,则返回原字符串。

'adi dog'.capitalize()
# 'Adi dog'

'abcd 徐'.capitalize()
# 'Abcd 徐'

'徐 abcd'.capitalize()
# '徐 abcd'

'ß'.capitalize()
# 'SS'

str.lower()

将字符串转换成小写,其仅对 ASCII 编码的字母有效。

'DOBI'.lower()
# 'dobi'

'ß'.lower() # 'ß' 为德语小写字母,其有另一种小写 'ss', lower 方法无法转换
# 'ß'

'徐 ABCD'.lower()
# '徐 abcd'

str.casefold()

将字符串转换成小写,Unicode 编码中凡是有对应的小写形式的,都会转换。

'DOBI'.casefold()
# 'dobi'

'ß'.casefold() #德语中小写字母 ß 等同于小写字母 ss, 其大写为 SS
# 'ss'

str.swapcase()

对字符串字母的大小写进行反转。

'徐Dobi a123 ß'.swapcase()
#: '徐dOBI A123 SS' 这里的 ß 被转成 SS 是一种大写
但需要注意的是 s.swapcase().swapcase() == s 不一定为真:

u'xb5'
# 'µ'

u'xb5'.swapcase()
# 'Μ'

u'xb5'.swapcase().swapcase()
# 'μ'

hex(ord(u'xb5'.swapcase().swapcase()))
Out[154]: '0x3bc'

这里 'Μ'(是 mu 不是 M) 的小写正好与 'μ' 的写法一致。

str.title()

将字符串中每个“单词”首字母大写。其判断“单词”的依据则是基于空格和标点,所以应对英文撇好所有格或一些英文大写的简写时,会出错。

'Hello world'.title()
# 'Hello World'

'中文abc def 12gh'.title()
# '中文Abc Def 12Gh'

# 但这个方法并不完美:
"they're bill's friends from the UK".title()
# "They'Re Bill'S Friends From The Uk"

str.upper()

将字符串所有字母变为大写,会自动忽略不可转成大写的字符。

'中文abc def 12gh'.upper()
# '中文ABC DEF 12GH'
需要注意的是 s.upper().isupper() 不一定为 True。

字符串格式输出

str.center(width[, fillchar])
将字符串按照给定的宽度居中显示,可以给定特定的字符填充多余的长度,如果指定的长度小于字符串长度,则返回原字符串。

'12345'.center(10, '*')
# '**12345***'

'12345'.center(10)
# ' 12345 '
str.ljust(width[, fillchar]); str.rjust(width[, fillchar])

返回指定长度的字符串,字符串内容居左(右)如果长度小于字符串长度,则返回原始字符串,默认填充为 ASCII 空格,可指定填充的字符串。

'dobi'.ljust(10)
# 'dobi '

'dobi'.ljust(10, '~')
# 'dobi~~~~~~'

'dobi'.ljust(3, '~')
# 'dobi'

'dobi'.ljust(3)
# 'dobi'
str.zfill(width)

用 '0' 填充字符串,并返回指定宽度的字符串。

"42".zfill(5)
# '00042'
"-42".zfill(5)
# '-0042'

'dd'.zfill(5)
# '000dd'

'--'.zfill(5)
# '-000-'

' '.zfill(5)
# '0000 '

''.zfill(5)
# '00000'

'DDDddddd'.zfill(5)
# 'dddddddd'
str.expandtabs(tabsize=8)
用指定的空格替代横向制表符,使得相邻字符串之间的间距保持在指定的空格数以内。

tab = '1t23t456t7890t1112131415t161718192021'

tab.expandtabs()
# '1 23 456 7890 1112131415 161718192021'
# '123456781234567812345678123456781234567812345678' 注意空格的计数与上面输出位置的关系

tab.expandtabs(4)
# '1 23 456 7890 1112131415 161718192021'
# '12341234123412341234123412341234'
str.fORMat(^args, ^^kwargs)

格式化字符串的语法比较繁多,官方文档已经有比较详细的 examples,这里就不写例子了,想了解的童鞋可以直接戳这里 Format examples.

str.format_map(mapping)

类似 str.format(*args, **kwargs) ,不同的是 mapping 是一个字典对象。

People = {'name':'john', 'age':56}

'My name is {name},i am {age} old'.format_map(People)
# 'My name is john,i am 56 old'

字符串搜索定位与替换

str.count(sub[, start[, end]])
text = 'outer protective covering'

text.count('e')
# 4

text.count('e', 5, 11)
# 1

text.count('e', 5, 10)
# 0
str.find(sub[, start[, end]]); str.rfind(sub[, start[, end]])
text = 'outer protective covering'

text.find('er')
# 3

text.find('to')
# -1

text.find('er', 3)
Out[121]: 3

text.find('er', 4)
Out[122]: 20

text.find('er', 4, 21)
Out[123]: -1

text.find('er', 4, 22)
Out[124]: 20

text.rfind('er')
Out[125]: 20

text.rfind('er', 20)
Out[126]: 20

text.rfind('er', 20, 21)
Out[129]: -1
str.index(sub[, start[, end]]); str.rindex(sub[, start[, end]])
与 find() rfind() 类似,不同的是如果找不到,就会引发 ValueError。

str.replace(old, new[, count])
'dog wow wow jiao'.replace('wow', 'wang')
# 'dog wang wang jiao'

'dog wow wow jiao'.replace('wow', 'wang', 1)
# 'dog wang wow jiao'

'dog wow wow jiao'.replace('wow', 'wang', 0)
# 'dog wow wow jiao'

'dog wow wow jiao'.replace('wow', 'wang', 2)
# 'dog wang wang jiao'

'dog wow wow jiao'.replace('wow', 'wang', 3)
# 'dog wang wang jiao'
str.lstrip([chars]); str.rstrip([chars]); str.strip([chars])
' dobi'.lstrip()
# 'dobi'
'db.kun.ac.cn'.lstrip('dbk')
# '.kun.ac.cn'

' dobi '.rstrip()
# ' dobi'
'db.kun.ac.cn'.rstrip('acn')
# 'db.kun.ac.'

' dobi '.strip()
# 'dobi'
'db.kun.ac.cn'.strip('db.c')
# 'kun.ac.cn'
'db.kun.ac.cn'.strip('cbd.un')
# 'kun.a'
static str.maketrans(x[, y[, z]]); str.translate(table)
maktrans 是一个静态方法,用于生成一个对照表,以供 translate 使用。
如果 maktrans 仅一个参数,则该参数必须是一个字典,字典的 key 要么是一个 Unicode 编码(一个整数),要么是一个长度为 1 的字符串,字典的 value 则可以是任意字符串、None或者 Unicode 编码。

a = 'dobi'
ord('o')
# 111

ord('a')
# 97

hex(ord('狗'))
# '0x72d7'

b = {'d':'dobi', 111:' is ', 'b':97, 'i':'u72d7u72d7'}
table = str.maketrans(b)

a.translate(table)
# 'dobi is a狗狗'

如果 maktrans 有两个参数,则两个参数形成映射,且两个字符串必须是长度相等;如果有第三个参数,则第三个参数也必须是字符串,该字符串将自动映射到 None:

a = 'dobi is a dog'

table = str.maketrans('dobi', 'alph')

a.translate(table)
# 'alph hs a alg'

table = str.maketrans('dobi', 'alph', 'o')

a.translate(table)
# 'aph hs a ag'

字符串的联合与分割

str.join(iterable)

用指定的字符串,连接元素为字符串的可迭代对象。

'-'.join(['2012', '3', '12'])
# '2012-3-12'

'-'.join([2012, 3, 12])
# TypeError: sequence item 0: expected str instance, int found

'-'.join(['2012', '3', b'12']) #bytes 为非字符串
# TypeError: sequence item 2: expected str instance, bytes found

'-'.join(['2012'])
# '2012'

'-'.join([])
# ''

'-'.join([None])
# TypeError: sequence item 0: expected str instance, NoneType found

'-'.join([''])
# ''

','.join({'dobi':'dog', 'polly':'bird'})
# 'dobi,polly'

','.join({'dobi':'dog', 'polly':'bird'}.values())
# 'dog,bird'
str.partition(sep); str.rpartition(sep)
'dog wow wow jiao'.partition('wow')
# ('dog ', 'wow', ' wow jiao')

'dog wow wow jiao'.partition('dog')
# ('', 'dog', ' wow wow jiao')

'dog wow wow jiao'.partition('jiao')
# ('dog wow wow ', 'jiao', '')

'dog wow wow jiao'.partition('ww')
# ('dog wow wow jiao', '', '')

'dog wow wow jiao'.rpartition('wow')
Out[131]: ('dog wow ', 'wow', ' jiao')

'dog wow wow jiao'.rpartition('dog')
Out[132]: ('', 'dog', ' wow wow jiao')

'dog wow wow jiao'.rpartition('jiao')
Out[133]: ('dog wow wow ', 'jiao', '')

'dog wow wow jiao'.rpartition('ww')
Out[135]: ('', '', 'dog wow wow jiao')
str.split(sep=None, maxsplit=-1); str.rsplit(sep=None, maxsplit=-1)
'1,2,3'.split(','), '1, 2, 3'.rsplit()
# (['1', '2', '3'], ['1,', '2,', '3'])

'1,2,3'.split(',', maxsplit=1), '1,2,3'.rsplit(',', maxsplit=1)
# (['1', '2,3'], ['1,2', '3'])

'1 2 3'.split(), '1 2 3'.rsplit()
# (['1', '2', '3'], ['1', '2', '3'])

'1 2 3'.split(maxsplit=1), '1 2 3'.rsplit(maxsplit=1)
# (['1', '2 3'], ['1 2', '3'])

' 1 2 3 '.split()
# ['1', '2', '3']

'1,2,,3,'.split(','), '1,2,,3,'.rsplit(',')
# (['1', '2', '', '3', ''], ['1', '2', '', '3', ''])

''.split()
# []
''.split('a')
# ['']
'bcd'.split('a')
# ['bcd']
'bcd'.split(None)
# ['bcd']
str.splitlines([keepends])

字符串以行界符为分隔符拆分为列表;当 keepends 为True,拆分后保留行界符,能被识别的行界符见官方文档。

'ab cnnde fgrklrn'.splitlines()
# ['ab c', '', 'de fg', 'kl']
'ab cnnde fgrklrn'.splitlines(keepends=True)
# ['ab cn', 'n', 'de fgr', 'klrn']

"".splitlines(), ''.split('n') #注意两者的区别
# ([], [''])
"One linen".splitlines()
# (['One line'], ['Two lines', ''])

字符串条件判断

str.endswith(suffix[, start[, end]]); str.startswith(prefix[, start[, end]])
text = 'outer protective covering'

text.endswith('ing')
# True

text.endswith(('gin', 'ing'))
# True
text.endswith('ter', 2, 5)
# True

text.endswith('ter', 2, 4)
# False

str.isalnum()

字符串和数字的任意组合,即为真,简而言之:

只要 c.isalpha(), c.isdecimal(), c.isdigit(), c.isnumeric() 中任意一个为真,则 c.isalnum() 为真。

'dobi'.isalnum()
# True

'dobi123'.isalnum()
# True

'123'.isalnum()
# True

'徐'.isalnum()
# True

'dobi_123'.isalnum()
# False

'dobi 123'.isalnum()
# False

'%'.isalnum()
# False
str.isalpha()
Unicode 字符数据库中作为 “Letter”(这些字符一般具有 “Lm”, “Lt”, “Lu”, “Ll”, or “Lo” 等标识,不同于 Alphabetic) 的,均为真。

'dobi'.isalpha()
# True

'do bi'.isalpha()
# False

'dobi123'.isalpha()
# False

'徐'.isalpha()
# True
str.isdecimal(); str.isdigit(); str.isnumeric()
三个方法的区别在于对 Unicode 通用标识的真值判断范围不同:

isdecimal: Nd,
isdigit: No, Nd,
isnumeric: No, Nd, Nl

digit 与 decimal 的区别在于有些数值字符串,是 digit 却非 decimal ,具体戳 这里

num = 'u2155'
print(num)
# ⅕
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, False, True)

num = 'u00B2'
print(num)
# ²
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, True, True)

num = "1" #unicode
num.isdecimal(), num.isdigit(), num.isnumeric()
# (Ture, True, True)

num = "'Ⅶ'"
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, False, True)

num = "十"
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, False, True)

num = b"1" # byte
num.isdigit() # True
num.isdecimal() # AttributeError 'bytes' object has no attribute 'isdecimal'
num.isnumeric() # AttributeError 'bytes' object has no attribute 'isnumeric'
str.isidentifier()

判断字符串是否可为合法的标识符。

'def'.isidentifier()
# True

'with'.isidentifier()
# True

'false'.isidentifier()
# True

'dobi_123'.isidentifier()
# True

'dobi 123'.isidentifier()
# False

'123'.isidentifier()
# False
str.islower()
'徐'.islower()
# False

'ß'.islower() #德语大写字母
# False

'a徐'.islower()
# True

'ss'.islower()
# True

'23'.islower()
# False

'Ab'.islower()
# False

str.isprintable()

判断字符串的所有字符都是可打印字符或字符串为空。Unicode 字符集中 “Other” “Separator” 类别的字符为不可打印的字符(但不包括 ASCII 的空格(0x20))。

'dobi123'.isprintable()
# True

'dobi123n'.isprintable()
Out[24]: False

'dobi 123'.isprintable()
# True

'dobi.123'.isprintable()
# True

''.isprintable()
# True

str.isspace()

判断字符串中是否至少有一个字符,并且所有字符都是空白字符。

In [29]: 'rnt'.isspace()
Out[29]: True

In [30]: ''.isspace()
Out[30]: False

In [31]: ' '.isspace()
Out[31]: True

str.istitle()

判断字符串中的字符是否是首字母大写,其会忽视非字母字符。

'How Python Works'.istitle()
# True

'How Python WORKS'.istitle()
# False

'how python works'.istitle()
# False

'How Python Works'.istitle()
# True

' '.istitle()
# False

''.istitle()
# False

'A'.istitle()
# True

'a'.istitle()
# False

'甩甩Abc Def 123'.istitle()
# True
str.isupper()
'徐'.isupper()
# False

'DOBI'.isupper()
Out[41]: True

'Dobi'.isupper()
# False

'DOBI123'.isupper()
# True

'DOBI 123'.isupper()
# True

'DOBIt 123'.isupper()
# True

'DOBI_123'.isupper()
# True

'_123'.isupper()
# False

字符串编码

str.encode(encoding="utf-8", errors="strict")

fname = '徐'

fname.encode('ascii')
# UnicodeEncodeError: 'ascii' codec can't encode character 'u5f90'...

fname.encode('ascii', 'replace')
# b'?'

fname.encode('ascii', 'ignore')
# b''

fname.encode('ascii', 'xmlcharrefreplace')
# b'徐'

fname.encode('ascii', 'backslashreplace')
# b'\u5f90'

--结束END--

本文标题: Python 的内置字符串方法小结

本文链接: https://www.lsjlt.com/news/15169.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 字符串内置方法(一)
    以下方法只需要知道用法就行了,权当了解,不用硬背,以后需要用到的时候再回来看 说明: 一般方法中前面是is开头的就是判断来的,输出不是True就是False,例如isalpha()方法 capitalize()方法:首字母大写 In [...
    99+
    2023-01-31
    字符串 方法 Python
  • python-字符串数据类型内置方法
    用途:描述性质的东西,如人的名字、单个爱好、地址、国家等 定义:使用单引号(' ')、双引号(" ")、三单引号(''' ''')、三双引号(""" """)包裹一串字符 name = 'rayn' print(type(name)) ...
    99+
    2023-01-31
    字符串 数据类型 方法
  • 字符串类型内置方法
    按索引取值 切片 长度len 成员用算in\not in 移除空白strip 切分split 循环for lstrip\rstrip lower upper startswith endswith rsplit join replac...
    99+
    2023-01-31
    字符串 类型 方法
  • MySQL 字符串转换为数字的方法小结
    方法一:直接 加 0select '123' + 0 方法二:函数 convert语法:convert (value, type);type可以为: decima...
    99+
    2024-04-02
  • 分割python多空格字符串的两种方法小结
    目录分割python多空格字符串做法第一种做法第二种做法如何分割字符串1.按空格分割2.分割+最大分割3.用#分割分割python多空格字符串 这篇文章需要处理的问题就是: 一个字符...
    99+
    2024-04-02
  • Python字符串的用法总结
    本篇内容介绍了“Python字符串的用法总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建字符串很简单,只要为变量分配一个值即可。例如:...
    99+
    2023-06-04
  • python 3.2 字符串方法学习总结
    Sequence Types sequence类型有六种:strings, byte sequences (bytes objects), byte arrays(bytearray objects), list, tuple, ...
    99+
    2023-01-31
    字符串 方法 python
  • Python的字符串方法
    Python字符串方法:s.isdigit() -> bool  Return True if all characters in S are digitss.islower() -> bool   Return True if...
    99+
    2023-01-31
    字符串 方法 Python
  • Python 字符串的方法
    字符串大小写相关 upper()      转换字符串中的所有小写字符为大写。 swapcase()     翻转字符串中的大小写。 lower()       转换字符串中所有大写字符为小写。 capitalize()      把字...
    99+
    2023-01-31
    字符串 方法 Python
  • Python字符串常规操作小结
    目录一、前言二、拼接字符串三、计算字符串的长度四、截取字符串五、分隔字符串六、检索字符串1.count()方法2.find()方法3.index()方法4.startswith()方...
    99+
    2024-04-02
  • 31个必备的Python字符串方法总结
    目录1、Slicing2、strip()3、lstrip()4、rstrip()5、removeprefix()6、removesuffix()7、replace()8、re.sub...
    99+
    2024-04-02
  • Python字符串字母大小写转换方法
    这篇文章主要介绍“Python字符串字母大小写转换方法”,在日常操作中,相信很多人在Python字符串字母大小写转换方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python字符串字母大小写转换方法”的疑...
    99+
    2023-06-30
  • str.方法的整理(字符串类型内置方法的
    <1>str.strip()、str.lstrip()和str.rstrip() 1' str.strip()(主要方法) 方法:str.strip(self,chars) 作用:移除字符串头与尾的指定字符。(核心是头与尾)...
    99+
    2023-01-31
    方法 字符串 类型
  • Python基础篇之字符串方法总结
    目录字符串拼接字符串分割字符串替换字符串大小写转换字符串判断partition()的用法总结python中字符串内置方法很多,可以通过dir()方式查看具体有哪些方法,下表是pyth...
    99+
    2023-05-17
    Python字符串方法总结 Python字符串方法 Python字符串
  • Python字符串的基本用法总结
        字符串序列用于表示和存储文本,python中字符串是不可变对象。通常由单引号(' ),双引号(" ),三引号(''' """)包围,其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释。便...
    99+
    2023-01-31
    字符串 Python
  • 10个有用的Python字符串函数小结
    目录前言一、capitalize() 函数二、lower( ) 函数三、title( ) 函数四、casefold() 函数五、upper( ) 函数六、count( ) 函数七、f...
    99+
    2024-04-02
  • Python学习之字符串常用方法总结
    目录什么是对象Python万物皆是对象字符串的索引索引[]索引[:]字符串的常用方法find()函数与index()函数startswith()函数与endswith()函数capi...
    99+
    2024-04-02
  • python字符串大小写转换的三种方法
    python中,为了方便字符串的大小写转换,为我们提供了三种方法: title()lower()upper() python title()方法 title()方法用于将字符串中的每...
    99+
    2023-02-07
    python字符串大小写转换 python字符串大小写
  • python 字符串比较忽略大小写的方法
    A.正则表达式,使用IGNORECASE标志 >>> import re >>> m = re.search('multi', 'A mUltiCased string', re.IGNOREC...
    99+
    2023-01-31
    大小写 字符串 方法
  • Python字符串处理的方法
    本文小编为大家详细介绍“Python字符串处理的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python字符串处理的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作