鱼C论坛

 找回密码
 立即注册
查看: 1982|回复: 0

[技术交流] 《零基础入门学习python》第十四讲笔记:字符串:各种奇葩的内置方法

[复制链接]
发表于 2017-7-30 21:16:37 | 显示全部楼层 |阅读模式

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

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

x
字符串和元组一样,被定义下来了就不能轻易修改

>>> str1 = 'I love fishc.com'
>>> str1[:6]
'I love'
>>>str1[5]
'e'
>>> str1[:6] + '插入的字符串'  + str1[6:]   # 拼接得到一个新的字符串,并不会覆盖原来的
'I love插入的字符串 fishc.com'
>>>str1
'I love fishc.com'
>>>str1 = str1[:6] + '插入的字符串'  + str1[6:]   # 将新得的字符串赋值给str1
>>>str1
'I love插入的字符串 fishc.com'

字符串的所有方法如下
capitalize()
把字符串的第一个字符改为大写
>>> str1 = 'asddf'
>>> str1.capitalize()
'Asddf'

casefold()
把整个字符串的所有字符改为小写
>>> str1
'Asddf'
>>> str1.casefold()
>>>'asddf'

center(width)
将字符串居中,并使用空格填充至长度 width 的新字符串
>>> str1.center(40)
'                 Asddf                  '

count(sub[, start[, end]])
返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
>>> str1
'Asddf'
>>> str1.count('d')
2
>>> str1.count('d',0,2)   # 从结果看出,第一个d是在2的位置,但并没有计算在内,说明end那个位置并没算
0
>>> str1.count('d',0,3)
1

encode(encoding='utf-8', errors='strict')
以 encoding 指定的编码格式对字符串进行编码。
>>> str1.encode()
b'Asddf'
>>> str1.encode(encoding='utf-8')    # 我用的是python3.0, 不支持有参数
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    str1.encode(encoding='utf-8')
TypeError: encode() takes no keyword arguments   

endswith(sub[, start[, end]])
检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
>>> str1
'Asddf'
>>> str1.endswith('f')
True
>>> str1.endswith('df')
True

expandtabs([tabsize=8])
把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
>>> str1 = 'asd\tdf'
>>> str1.expandtabs()
'asd     df'

find(sub[, start[, end]])
检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
>>> str1.find('s')   # 返回s所在的索引值
1
>>> str1.find('c')  # 不包含在str1,返回-1
-1

index(sub[, start[, end]])
跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
>>> str1.index('c')   # 找不到会返回异常
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    str1.index('c')
ValueError: substring not found
>>> str1.index('s')
1

isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
>>> str1 = 'assdf'
>>> str1.isalnum()
True
>>> str1 = 'assdf12'
>>> str1.isalnum()
True
>>> str1 = '12344'
>>> str1.isalnum()
True

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

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

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

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

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

isspace()
如果字符串中只包含空格,则返回 True,否则返回 False。
>>> str1 = ''  # 这里无空格
>>> str1.isspace()
False
>>> str1 = ' '  # 这里有一个空格
>>> str1.isspace()
True

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

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

join(sub)
以字符串作为分隔符,插入到 sub 中所有的字符之间。
>>> str1.join('iloveyou')
'iQWERlQWERoQWERvQWEReQWERyQWERoQWERu'

ljust(width)
返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
>>> str1.ljust(40)
'QWER                                    '

lower()
转换字符串中所有大写字符为小写。
>>> str1 = 'QWERty'
>>> str1.lower()
'qwerty'

lstrip()
去掉字符串左边的所有空格
>>> str1 = '     asdf     '
>>> str1.lstrip()
'asdf     '

partition(sub)
找到子字符串 sub,把字符串分成一个  元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '')
>>> str1 = 'Wu Bso Zhenning'
>>> str1.partition('nn')
('Wu Bso Zhe', 'nn', 'ing')

replace(old, new[, count])
把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
>>> str1.replace('nn','NN')
'Wu Bso ZheNNing'

rfind(sub[, start[, end]])
类似于 find() 方法,不过是从右边开始查找。
str1 = 'Wu Bso Zhenning'    # 从右边开始找,第一个是倒数第二个,然后给出正常索引号
>>> str1.rfind('n')
13

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

rjust(width)
返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
>>> str1 = '     asdf'
>>> str1.rjust(40)
'                               asdf'

rpartition(sub)
类似于 partition() 方法,不过是从右边开始查找。
>>> str1 = 'Wu Bso Zhenning'
>>> str1.rpartition('nn')   
('Wu Bso Zhe', 'nn', 'ing')

rstrip()
删除字符串末尾的空格。
>>> str1 = '     asdf     '
>>> str1.rstrip()
'     asdf'


split(sep=None, maxsplit=-1)
不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
>>> str1 = 'Wu Bso Zhenning'  # 默认以空格切片为一个新列表
>>> str1.split()
['Wu', 'Bso', 'Zhenning']

splitlines(([keepends]))
按照 '\n' 分隔,返回一个包含各行作为元素的列表,如果 keepends 参数指定,则返回前 keepends 行。
>>> str1 = 'ss\naa\nfdffdf\ndd'
>>> str1.splitlines()  # 不给参数,返回各行作为元素的列表
['ss', 'aa', 'fdffdf', 'dd']
>>> str1.splitlines(2)   # 给个参数2,返回前3行
['ss\n', 'aa\n', 'fdffdf\n', 'dd']


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

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

swapcase()
翻转字符串中的大小写。
>>> str1.swapcase()
'     ASDF     '

title()
返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
>>> str1 = 'wu bso zhenning'
>>> str1.title()
'Wu Bso Zhenning'

translate(table)
根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。
>>> str1 = 'sssassdddaa'
>>> str1.translate(str.maketrans('s','b'))   # 把s全替换成了b
'bbbabbdddaa'
>>> str.maketrans('s','b')
{115: 98}


upper()
转换字符串中的所有小写字符为大写。
>>> str1.upper()
'WU BSO ZHENNING'

zfill(width)
返回长度为 width 的字符串,原字符串右对齐,前边用0填充。
>>> str1.zfill(40)
'0000000000000000000000000wu bso zhenning'



当str1 = '10'时, isnumeric()  isdigit()  isdecimal() 均返回True. 这三个,平常用的多是isdigit()

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 22:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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