鱼C论坛

 找回密码
 立即注册
查看: 1803|回复: 2

[技术交流] 《Python零基础》014、字符串:各种奇葩的内置方法

[复制链接]
发表于 2017-7-25 17:03:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 caodouhao 于 2017-7-26 18:48 编辑

字符串:各种奇葩的内置方法

或许现在又回过头来谈字符串,有些朋友可能会觉得没必要,也有些朋友会觉得不就是字符串嘛,哥倒着都能写出来。
其实关于字符串,还有很多你可能不知道的秘密,由于字符串在日常使用中是如此常见,因此小甲鱼抱着负责任的态度在这节课上,把所知道的都倒出来跟大家分享一下,大家交流翻炒一下。
切片操作(分片操作):
>>> str1 = "abcdefghjkl"
>>> str1[:6]
'abcdef'
>>> 
访问字符串:

>>> str1 = "abcdefghjkl"
>>> str1[6]
'g'
>>> 
修改字符串:
>>> str1 = "abcdefghjkl"
>>> str2 = str1[:6] + "11" + str1[6:]
>>> str2
'abcdef11ghjkl'
>>> 

比较操作符:



逻辑操作符:


成员操作符:



列表和元组都有他们的方法,大家可能觉得列表的方法已经非常多了,其实字符串更多呢,而且很多都挺莫名其妙的,这里就给大家谈谈出各种奇葩的字符串的方法。


capitalize()
把字符串的第一个字符改为大写
>>> str1 = "abcdefg"
>>> str1.capitalize ()
'Abcdefg'
>>> 
casefold()
把整个字符串的所有字符改为小写
>>> str2 = "ABCD"
>>> str2.casefold()
'abcd'
>>> 
center(width)
将字符串居中,并使用空格填充至长度 width 的新字符串
>>> str2
'ABCD'
>>> str2.center(23)
'          ABCD         '
>>>
count(sub[, start[, end]])
返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
>>> str2 = "aabbccddeeffgg"
>>> str2.count("c")
2
>>> 
endswith(sub[, start[, end]])
检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
>>> str1 = "abcdefg"
>>> str1.endswith("a")
False
>>> str1.endswith("g")
True
>>>
expandtabs([tabsize=8])
把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
>>> str1 = "a\tb\tc\td\te"
>>> str1.expandtabs()
'a       b       c       d       e'
>>> 
find(sub[, start[, end]])
检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
>>> str1 = "abcdefg"
>>> str1.find("c")
2

>>> 
index(sub[, start[, end]])
跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
>>> str1 = "abcdefg"
>>> str1.index("h")
Traceback (most recent call last):
  File "<pyshell#114>", line 1, in <module>
    str1.index("h")
ValueError: substring not found
>>> 
isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
>>> str1 = "abcdefg123"
>>> str1.isalnum()
True
>>> 


isalpha()

如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
>>> str1 = "abcdefg123"
>>> str1.isalpha()
False
>>> 


isdecimal()

如果字符串只包含十进制数字则返回 True,否则返回 False。
>>> str1 = "abcdefg123"
>>> str1.isdecimal()
False
>>>


isdigit()

如果字符串只包含数字则返回 True,否则返回 False。
>>> str1 = "abcdefg123"
>>> str1.isdigit()
False
>>> str2 = "123456"
>>> str2.isdigit()
True
>>> 


islower()

如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。
>>> str3 = "abcdef"
>>> str3.islower()
True
>>> str4 = "小甲鱼"
>>> str4.islower()
False
>>> 


isnumeric()

如果字符串中只包含数字字符,则返回 True,否则返回 False。
>>> str3 = "1234556"
>>> str3.isnumeric()
True
>>> 


isspace()

如果字符串中只包含空格,则返回 True,否则返回 False。
>>> str2= "    "
>>> str2.isspace()
True
>>> 


istitle()

如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。
>>> str1 = "Hello"
>>> str1.istitle()
True
>>> 


isupper()

如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
>>> str1="ABCD"
>>> str1.isupper()
True
>>> 


join(sub)

以字符串作为分隔符,插入到 sub 中所有的字符之间。
>>> str1 = "abcdefg"
>>> str1.join("123456")
'1abcdefg2abcdefg3abcdefg4abcdefg5abcdefg6'
>>> 


ljust(width)

返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
>>> str1 = "abcdefg"
>>> str1.join("123456")
'1abcdefg2abcdefg3abcdefg4abcdefg5abcdefg6'
>>> str1.ljust(10)
'abcdefg   '
>>> 


lower()

转换字符串中所有大写字符为小写。
>>> str1 = "ABcd"
>>> str1.lower()
'abcd'
>>> 
lstrip()去掉字符串左边的所有空格
>>> str1 = "   前面有3个空格"
>>> str1.lstrip()
'前面有3个空格'
>>> 

partition(sub)
找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '')
>>> str1 = "abcdefg"
>>> str1.partition("d")
('abc', 'd', 'efg')
>>> 

replace(old, new[, count])
把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
>>> str1 = "abcdefg"
>>> str1.replace("d","1")
'abc1efg'

rfind(sub[, start[, end]])
类似于 find() 方法,不过是从右边开始查找。


rindex(sub[, start[, end]])
类似于 index() 方法,不过是从右边开始。

rstrip()
删除字符串末尾的空格。
>>> str1 = "后面有3个空格   "
>>> str1.rstrip()
'后面有3个空格'
>>>

split(sep=None, maxsplit=-1)
不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
>>> str1 = "a b c d e f"
>>> str1.split()
['a', 'b', 'c', 'd', 'e', 'f']
>>> 
>>> str1 = "abcdefg"
>>> str1.split("d")
['abc', 'efg']
>>> 

splitlines(([keepends]))
按照 '\n' 分隔,返回一个包含各行作为元素的列表,如果 keepends 参数指定,则返回前 keepends 行。
>>> str1
'aa\nbb\ncc\nAABBCC'
>>> str1.splitlines()
['aa', 'bb', 'cc', 'AABBCC']
>>> str1 = "aa\nbb\ncc\nAABBCC"
>>> str1.splitlines(2)
['aa\n', 'bb\n', 'cc\n', 'AABBCC']

startswith(prefix[, start[, end]])
检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
>>> str1 = "aabbccAABBCC"
>>> str1.startswith("a")
True
>>>

strip([chars])
删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
>>> str1 = "   aabbccd   deeddccaa   "
>>> str1.strip()
'aabbccd   deeddccaa'
>>> str1 = "aabbccd   deeddccaa"
>>> str1.strip("a")
'bbccd   deeddcc'
>>>

swapcase()
翻转字符串中的大小写。
>>> str1 = "aabbccAABBCC"
>>> str1.swapcase()
'AABBCCaabbcc'
>>> 

title()
返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
>>> str1 = "i love fishc "
>>> str1.title()
'I Love Fishc '
>>> 

translate(table)
根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。
>>> str1 = "aabbccAABBCC"
>>> str1.translate(str.maketrans("b","8"))
'aa88ccAABBCC'
>>>

upper()
转换字符串中的所有小写字符为大写。
>>> str1 = "aabbccAABBCC"
>>> str1.upper()
'AABBCCAABBCC'
>>> 

zfill(width)
返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。
>>> str1.zfill(20)
'00000000aabbccAABBCC'
>>> 


capitalize()
把字符串的第一个字符改为大写
casefold()
把整个字符串的所有字符改为小写
center(width)
将字符串居中,并使用空格填充至长度 width 的新字符串
count(sub[, start[, end]])
返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
encode(encoding='utf-8', errors='strict')
以 encoding 指定的编码格式对字符串进行编码。
endswith(sub[, start[, end]])
检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
expandtabs([tabsize=8])
把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
find(sub[, start[, end]])
检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
index(sub[, start[, end]])
跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
isalpha()
如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
isdecimal()
如果字符串只包含十进制数字则返回 True,否则返回 False。
isdigit()
如果字符串只包含数字则返回 True,否则返回 False。
islower()
如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。
isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False。
isspace()
如果字符串中只包含空格,则返回 True,否则返回 False。
istitle()
如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。
isupper()
如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
join(sub)
以字符串作为分隔符,插入到 sub 中所有的字符之间。
ljust(width)
返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
lower()
转换字符串中所有大写字符为小写。
lstrip()
去掉字符串左边的所有空格
partition(sub)
找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '')
replace(old, new[, count])
把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
rfind(sub[, start[, end]])
类似于 find() 方法,不过是从右边开始查找。
rindex(sub[, start[, end]])
类似于 index() 方法,不过是从右边开始。
rjust(width)
返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
rpartition(sub)
类似于 partition() 方法,不过是从右边开始查找。
rstrip()
删除字符串末尾的空格。
split(sep=None, maxsplit=-1)
不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
splitlines(([keepends]))
按照 '\n' 分隔,返回一个包含各行作为元素的列表,如果 keepends 参数指定,则返回前 keepends 行。
startswith(prefix[, start[, end]])
检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
strip([chars])
删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
swapcase()
翻转字符串中的大小写。
title()
返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
translate(table)
根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。
upper()
转换字符串中的所有小写字符为大写。
zfill(width)
返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。



评分

参与人数 1鱼币 +7 收起 理由
小甲鱼 + 7

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-25 17:12:41 | 显示全部楼层
学习笔记记得选入“淘专辑”哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 16:22:02 | 显示全部楼层
小甲鱼 发表于 2017-7-25 17:12
学习笔记记得选入“淘专辑”哦~

感谢小甲鱼的精彩视频讲解~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 11:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表