51学通信论坛2017新版
标题:
1.12 字符串的常用操作
[打印本页]
作者:
爱卫生
时间:
2017-12-13 13:56
标题:
1.12 字符串的常用操作
本帖最后由 爱卫生 于 2017-12-13 23:08 编辑
1)首字母大写capitalize:
names = "alice"
print(names.capitalize())
复制代码
输出:Alice
2)统计字符串数量count:
names = '''
welcome to beijing
welcome to shanghai
welcome to guangzhou
'''
print(names.count("w"))
print(names.count("wel"))
print(names.count("g"))
复制代码
输出:
3
3
4
复制代码
3)字符串居中显示center
需求:把字符串居中打印,并设定总长度为30字节,不足用-补齐。
代码:
names = "welcome to beijing"
print(names.center(30,"*"))
复制代码
结果:
******welcome to beijing******
复制代码
可以看到,welcome to beijing是居中输出了,总长度为30字节。不足的部分用*来补齐。
4)检查是否以特定字符结尾endswith
需求:检查字符串是否以beijing结尾。
names = "welcome to beijing"
print(names.endswith("beijing"))
print(names.endswith("shanghai"))
复制代码
结果:
True
False
复制代码
5)扩展输出中Tab键的长度expandtabs
代码:
names="welcome to beijing"
names1 = "\twelcome to beijing"
print(names)
print(names1)
print(names1.expandtabs(tabsize=6))
复制代码
输出:[attach]5580[/attach]
可以看到。在输出中,第一行没有加tab,是顶格的。第二行加了1个tab,有缩进。第三行则扩展了这个tab的长度,转成了6个空格输出(上图紫色的部分是6个空格)。所以缩进更长了。
6)查找字符在字符串中的位置find
代码:
names="welcome to beijing,welcome to beijing!"
x = (names.find("come"))
print(x)
print(names[x:x+4])
复制代码
输出:
3
come
复制代码
可以看到,输出中返回了come在字符串中的位置是3(开始字符的位置是0)。注意,find只返回第一个找到的结果的位置。也就是说上例如果有多个come,那结果也是3。
***find操作有个非常重要的用途,就是字符串的切片。可用于相关新闻推荐中的关键词拆词。例如把搜索的中国的美食拆成“中国”、“的”和“美食”3个词。
在最后一行的输出中就成功实现了对字符串的切片。当然这个是比较简单的切片,因为我们假设come的长度是已知的4个字符,come也是已知的。所以只需要+4就可以了。
7)查找字符在字符串中的索引index
index和find方法类似,区别只是当没有搜索到字符串时,index方法会报错,但find会返回-1,不影响程序执行。
8)判断是否是阿拉伯数字或阿拉伯字符isalnum
只要字符串是标准的英文字符或数字,结果都是为true的。其他为fasle。比如有特殊字符等等。
代码:
names="welcome to beijing,welcome to beijing!"
print("123abc".isalnum())
print(names.isalnum())
复制代码
输出:
True
False
复制代码
9)判断是否是一个证书isdigit
代码:
print('18'.isdigit())
print('18.18'.isdigit())
复制代码
输出:
True
False
复制代码
10)判断是否是一个合法的标识符(即合法的变量名)isidentifier
代码:
print('abc'.isidentifier())
print('a bc'.isidentifier())
print('/abc'.isidentifier())
复制代码
输出:
True
False
False
复制代码
11)判断是否是小写islower
print("ABC".islower())将返回FALSE
12)判断是否每个单词的首字母大写istitle
代码:
names="Welcome to beijing!"
names1="Welcome To Beijing!"
#age = 18
#balance =18.18
print(names.istitle())
print(names1.istitle())
复制代码
输出:
False
True
复制代码
13)判断是否全都大写isupper
print("ABC".isupper())将返回True
14)数字转字符,并添加连接符连接join
代码:
c = ('+'.join(['1','2','3']))
print(type(c))
print(c)
复制代码
输出:
<class 'str'>
1+2+3
复制代码
可以看出,join之前,1、2、3是数字,join之后变成字符串了。然后+为连接符,也可以是逗号,输出就变成1,2,3了。
15)字符补齐长度,用填充符填充ljust
类似于center,也有补齐和填充的作用。只不过center是补齐后居中,ljust是字符显示在左边,右侧补齐。
代码:
names="Welcome"
print(names.ljust(30,'*'))
复制代码
结果:
Welcome***********************
复制代码
16)字符补齐长度,用填充符填充rjust
类似于center,也有补齐和填充的作用。只不过center是补齐后居中,rjust是字符显示在右边,左侧补齐。
names="Welcome"
print(names.rjust(30,'-'))
复制代码
结果:
-----------------------Welcome
复制代码
17)把大写转换成小写lower
print("ABC".lower())会输出abc。
18)把小写转换成大写upper
print("abc".upper())会输出ABC。
19)去掉两头的空格和回车strip
names=" Welcome "
print(names.strip())
复制代码
输出:
Welcome。
20)只去掉左边的空格和回车lstrip
和strip类似,但lstrip是去掉字符串左边的空格与回车。(可以在字符串左边加一个/n,即添加回车符看效果)
21)只
去掉右边的空格和回车rstrip
和strip类似,但rstrip是去掉字符串右边的空格与回车。
22)
翻译maketrans和translate
这个是先定义一个翻译规则,然后对字符串按照该规则进行翻译。可以达到随机密码或者莫尔斯电码的类似效果。
代码:
city1="lanzhou"
city2="guangzhou"
p = str.maketrans('lanzhou','1234567')
print(city1.translate(p))
print(city2.translate(p))
复制代码
输出:
1234567
g723g4567
复制代码
可以看到,翻译规则是l转成1,a转成2。。。u转成7。所以city1调用translate方法的时候,完全匹配,被翻译成了1234567。
但city2是guangzhou,所以g没有匹配,保留了。u匹配了,被翻译成了7,a匹配了,被翻译成了2。。。最后的结果就是g723g4567。
需要注意,定义翻译规则(maketrans)的时候,前后两个字符串一定要相同长度,否则会报错以下错误。
ValueError: the first two maketrans arguments must have equal length。
23)
字符替换replace
把字符串里面的字符替换成另一个字符。
print("abcabcabc".replace('a','A'))
print("abcabcabc".replace('a','A',2))
复制代码
结果:
AbcAbcAbc
AbcAbcabc
复制代码
可以看到,默认是全部替换,将a替换成了A。如果指定一个数字2,则可以只替换前面2个。
24)搜索最右侧的字符rfind
和find类似,只不过是搜索最右边符合条件的字符串。但数的方向还是从左往右数。
print("defabcdefabc".find('abc'))
print("defabcdefabc".rfind('abc'))
复制代码
输出:
3
9
复制代码
25)拆分字符split、按换行符来拆分splitlines和右侧拆分字符rsplit
25.1)split
按照空格把字符串拆分成一个列表。
注:默认是按空格来分,也可以人工指定按什么来分。
代码:
print("welcome to beijing!".split())
print("welcome to beijing!".split(‘i’))
print("1+2+3+4".split('+'))
复制代码
输出:
['welcome', 'to', 'beijing!']
['welcome to be', 'j', 'ng!']
['1', '2', '3', '4']
复制代码
可以看到,倒数第二行和最后一行,字符l和+号被当成分隔符,然后被去掉了。
25.2)按换行符来拆分splitlines
代码:
print("1+2\n+3+4".splitlines())
复制代码
输出:
['1+2', '+3+4']
复制代码
25.3)右侧拆分字符rsplit
代码:
print("bj.mnc000.mcc460.3gppnetwork.org".rsplit('.'))
print("bj.mnc000.mcc460.3gppnetwork.org".rsplit('.',1))
print("bj.mnc000.mcc460.3gppnetwork.org".rsplit('.',2))
print("bj.mnc000.mcc460.3gppnetwork.org".rsplit('.',3))
复制代码
输出:
['bj', 'mnc000', 'mcc460', '3gppnetwork', 'org']
['bj.mnc000.mcc460.3gppnetwork', 'org']
['bj.mnc000.mcc460', '3gppnetwork', 'org']
['bj.mnc000', 'mcc460', '3gppnetwork', 'org']
复制代码
26)大小写反转swapcase
把字符串中的大小写反转:
print
(
"Beijing"
.swapcase())的输出是:bEIJING
27)填充zfill
代码:
print
(
"Beijing"
.zfill(
20
))输出是
0000000000000Beijing。
用0来填充。
欢迎光临 51学通信论坛2017新版 (http://bbs.51xuetongxin.com/)
Powered by Discuz! X3