自学python从字符串开始吧

    字符串方法很重要,因为无论我们是要搞爬虫,还是大数据,都需要数据清洗,而字符串方法就是我们必备的知识。
	首先我们看看自学最常用的一个函数print().
help(print)#用python的帮助函数获得print函数信息
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
#我们来看一下,python的函数特点,看看调用print都有哪些参数
#value:函数打印的值
#sep:默认参数是一个空格
#end:默认参数是换行符
#file:默认参数是标准输出
#flush:默认参数是布尔值False
#下面看看各个参数的作用
print(1,2,3,end='###')#把end关键字参数设置#字符串,会在最后打印的末尾加上#号
print()
print(1)
print(1,2,sep='--',)
#把end关键字参数设置*字符串,会在最后打印的末尾加上星号
print(1,2,3,sep='---')
#输出:
1 2 3###
1
1--2
1---2---3

以上就是print的一些花样,未详细介绍sys.stdout和flush,因为就目前的水平来说,这两个参数还太早。
下面来看看字符串的各种方法:

print(dir(str))#用dir函数列出字符串类的所有方法
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

字符串的方法比较多,我们来逐一看一下:
首先是切片,切片slice是有序的序列都支持的一种取值方法.

a='abc123'
print(a[0],a[-1],a[0:],a[0:3],a[0::3])#用下标取值,下标都从0开始,这种取值方式叫切片[start:end:sep]
print(a[-1::-1])#发挥你的想象力,如何倒着打印字符串
print(a+a)#字符串相加
print(a*2)#字符串相乘
#输出
a 3 abc123 abc a1
321cba
abc123abc123
abc123abc123

有了切片方法,我们就能取到字符串中的每一个值
我理解的所谓函数就是我们能对传入的参数做点什么,所谓方法就是这个数据类型能做什么
下面我们来看看字符串有哪些方法,只有字符串能调用的方法。

'''有关大小写转换的字符串方法'''
name='tom smith**isgood'
print(name.upper())#所有字母大写
print(name.title())#单词首字母大写
print(name.lower())#所有字母小写
print(name.capitalize())#注意和title方法区分,这个只有首字母大写
print(name.casefold())#与lower方法看似一样实则功能更强大,lower只对英文字母有效,而casefold对非汉语和英文的其他字符串也有效。
print(name.swapcase())#把大写的变小写,小写的变大写
'''输出'''
TOM SMITH**ISGOOD
Tom Smith**Isgood#注意title方法是所有单词首字母大写
tom smith**isgood
Tom smith**isgood
tom smith**isgood
TOM SMITH**ISGOOD
name='abc'
print(name.ljust(6,'#'))#左对齐,第二个参数可以是任意字符串,填充数量为第一个参数减去字符串长度
print(name.rjust(6,'*'))#右对齐,
print(name.center(5,'%'))#居中对齐
'''输出'''
abc###
***abc
%abc%
name='abdccdaa'
print(name.find('d'))#在字符串中从左向右查找字母'd',并返回第一个找到的下标如果没有该字符返回-1
print(name.rfind('d'))#在字符串中从右向左查找字母'd',并返回第一个找到的下标,如果没有该字符返回-1
print(name.index('d'))#返回字符串的位置下标,如果没有该字符,引发错误
print(name.rindex('d'))#返回字符串的最大下标,如果没有该字符引发错误
#以上四种方法看似相似,实际上应用的场景是不同的,find是你不知道字符串李有没有这个字符,index一般应用在已知有该字符,想要取得下标的情况
'''输出'''
2
-1
2
5
name='www.baidu.com'
name_list=name.split('.')#用给定的字符,分割字符串,分割的结果是一个列表,这将是我们很常用的一个方法
#还有一个str.splitlines( keepends=False)根据换行符\n,\r,分割字符串
print(name_list)
name_str='.'.join(name_list)#split方法的逆向操作,再用点字符把列表转换成字符串,name_list中各个元素必须都为字符串
print(name_str)
print(name.partition('.'))#用给定的字符把字符串分成三个部分,从左向右第一次匹配到给定字符的位置开始分割
print(name.rpartition('.'))#用给定的字符把字符串分成三个部分,从右向左第一次匹配到给定字符的位置开始分割
'''输出'''
['www', 'baidu', 'com']
www.baidu.com
('www.baidu.com', '', '')
('www.baidu', '.', 'com')
'''注意各个方法的返回值,split方法返回的是列表,而partition返回的是元组
'''
num='aaa1113334'
print(num.count('a'))#对给定的字符,查找在字符串中出现的次数
print('我是{}'.format(num))#字符串格式化方法,字符串中用{}当作占位符
#str.format_map()同样是字符串格式化方法
print(num.replace('a','*'))#替换字符串中的字母,查找字符串中的a字母替换成星号
print(num.zfill(15))#用0补足15位
print('我从哪里来'.encode('utf8'))#返回utf8编码的比特类型
print('我从哪里来'.encode('gbk'))#返回gbk编码的比特类型
'''输出'''
3
我是aaa1113334
***1113334
00000aaa1113334
b'\xe6\x88\x91\xe4\xbb\x8e\xe5\x93\xaa\xe9\x87\x8c\xe6\x9d\xa5'
b'\xce\xd2\xb4\xd3\xc4\xc4\xc0\xef\xc0\xb4'

str.maketrans(intab,outtab[,delchars])该方法接受三个参数,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串,表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。第三个参数表示需要删除的字符串。返回一个映射对象供translate方法调用
str.translate(maketraner),接受maketrans返回的映射对象,并返回替换后的字符串
str.expandtabs(tabsize=8)返回一个字符串的副本。使原字符串中的制表符("\t")的使用空间变大。使用空格来扩展空间。tabsie在0-8之间字符串没有变化,只有当大于8的时候字符串才会变化。
这两个方法不太常用,没有单独指出例子。

接下来是str方法的判断大军,返回值位布尔值,也就是True or False

name='my good day is  0916'
name1='1234'
name2='Abcd'
print(name.isalnum())#判断字符串是否都是字母或者数字
print(name1.isalnum())
print(name2.isalnum())
print((name1+name2).isalnum())#字符串相加结果就是拼接到一起生成一个新字符串

'''输出'''
False
True
True
True
name='my good day is  0916'
name1='1234'
name2='Abcd'
print(name.isalpha())#判断字符串是否完全由字母组成
print(name2.isalpha())
print(name.isascii())#判断字符串是否全由ascii码组成,ascii码就是所有我们电脑键盘上能打出来的各种字母符号,想要深入了解的请百度
'''输出'''
False
True
True
name='my good day is  0916'
name1='1234'
name2='Abcd'
print(name.isdecimal())#方法检查字符串是否只包含数字,包括unicode数字,全角数字
print(name1.isdecimal())
print('1.001'.isdecimal())#浮点数不行,
'''输出'''
False
True
False
name='my good day is  0916'
name1='1234'
name2='Abcd'
print(name.isdigit())#可判断是否全为unicode数字,全角数字,byte数字,罗马数字
print(name1.isdigit())
'''输出'''
False
True

print('_1122'.isidentifier())#判断字符串是否能作为python合法的变量名称。
print('aa aa'.isidentifier())
'''输出'''
True
False
print('aaccAA'.islower())#判断字符串是否全为小写
print('aavvccdee'.islower())

'''输出'''
False
True
print('AAAccdd'.isprintable())#检查字符串中的字符是否都可以打印,空格和换行,制表符等都会返回False
print('\n   aaaa'.isprintable())#\n,为python中的换行符
'''输出'''
True
False
print('   \n\t'.isspace())#判断字符串中是否均为空白字符
True
---------------------------------------------------
print('Abc daa'.istitle())#方法检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。
print('Abc Daa'.istitle())
'''输出'''
False
True
print('AAA123BBBB'.isupper())#判断字符串中所有字母都为大写
print('aaaaa bbb112'.islower())#判断字符串中所有字母都为小写
True
True

#以上就是字符串的所有方法,有很多都是我们会经常用到的,比如join,split,format
#练习题
#name=’ my name is john ’ 打印出‘john
#name=‘12345’ 打印出反向的name‘54321’
#name=‘aabbcc’,统计字母a出现次数
#name=‘ aa bb cc ’ 打印出‘aabbcc’

发布了23 篇原创文章 · 获赞 5 · 访问量 378

猜你喜欢

转载自blog.csdn.net/weixin_43287121/article/details/105098722