(12)字符串分割变换
- join()将指定字符插入到元素之间。
- split()以指定字符分隔序列且去除该字符
- partition()以指定字符分隔序列且包含该字符
#join
>>> str="learn string"
>>> "-".join(str)
'l-e-a-r-n- -s-t-r-i-n-g'
>>> li=["learn","string"]
>>> "-".join(li)
>>> str.split("n")
['lear', ' stri', 'g']
#split
>>> str.split("n",1)
['lear', ' string']
>>> str.splitlines()
['learn string']
#partition
>>> str.partition("n")
('lear', 'n', ' string')
>>> str.rpartition("n")
('learn stri', 'n', 'g')
>>>
补充:
string模块
string模块中的capwords()函数功能:
- 1.将每个单词首字母置为大写
- 2.将每个单词除首字母外的字母均置为小写;
- 3.将词与词之间的多个空格用一个空格代替
- 4.其拥有两个参数,第二个参数用以判断单词之间的分割符,默认为空格。
>>> import string
>>> dir(string)
['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace']
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>>
"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。
下面整理了一下Python中字符串格式化符合:
格式化符号 | 说明 |
---|---|
%c | 转换成字符(ASCII 码值,或者长度为一的字符串) |
%r | 优先用repr()函数进行字符串转换 |
%s | 优先用str()函数进行字符串转换 |
%d / %i | 转成有符号十进制数 |
%u | 转成无符号十进制数 |
%o | 转成无符号八进制数 |
%x / %X | 转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写) |
%e / %E | 转成科学计数法(e / E控制输出e / E) |
%f / %F | 转成浮点数(小数部分自然截断) |
%g / %G | %e和%f / %E和%F 的简写 |
%% | 输出% (格式化字符串里面包括百分号,那么必须使用%%) |
这里列出的格式化符合都比较简单,唯一想要强调一下的就是"%s"和"%r"的差别。
看个简单的代码:
a=15
print(("%d to hex is %x")%(a,a))
#结果:15 to hex is f
>>> "%f" % 15
#结果:'15.000000'
>>> "%e" % 15000
#结果:'1.500000e+04'
>>> "%d" % 100
#结果:'100'
>>> "%d%%" %100
#结果:'100%'
>>>
你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势
只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦。
name=input("Name:")
age=input("Age:")
job=input("Job:")
hobbie=input("Hobbie:")
info ='''
---info of %s---
Name :\t %s
Age :\t %s
Job :\t %s
Hobbie :\t %s
-------end------
'''%(name,name,age,job,hobbie)
print(info)
#输入:
#Name:rita
#Age:18
#Job:1234
#Hobbie:13435
#结果:
#---info of rita---
#Name : rita
#Age : 18
#Job : 1234
#Hobbie : 13435
-------end------
>>>
列表
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
特点: 是一个有序的,可以重复的序列,可变类型。
1.创建一个空列表
>>> list1=[]
>>> print(type(list1))
<class 'list'>
>>>
2.创建一个有多个值的列表,每个值用逗号隔开
list2=[12,3,4,56,57,56]
3.列表也可以存放不同类型的元素
list3=[18,"str",[1,2,3],(66,67),{'name':'Tom','age':18}]
4.列表的拼接
list3 + list
5.列表的重复
list * 3
6.列表索引和切片
>>> list3=[12,"str",[1,2,3],(66,67),{'name':'Tom','age':18}]
>>> len(list3)
#结果:5
>>> list3[0]
#结果:12
>>> list3[3]
#结果:(66, 67)
>>> list3[-1]
#结果:{'name': 'Tom', 'age': 18}
>>> list3[3:]
#结果:[(66, 67), {'name': 'Tom', 'age': 18}]
>>> list3[0::2]
#结果:[12, [1, 2, 3], {'name': 'Tom', 'age': 18}]
>>>
列表的常见操作
列表:
names = ['a','b','c']
1.增加
append(),extend(),insert()
- 1)append(),增加到最后
>>> names=['a','s','f']
>>> names.append("r")
>>> print(names)
['a', 's', 'f', 'r']
- 2)extend(),迭代的去增加
>>> name=["&&","a","f","t","devier"]
>>> place=["bejing","shanghai","use"]
>>> name.extend(place)
>>> print(name)
['&&', 'a', 'f', 't', 'devier', 'bejing', 'shanghai', 'use']
>>>
- 3)insert(),按照索引去增加
>>> name=["&&","a","f","t","devier"]
>>> name.insert(2,"devilf")
>>> print(name)
['&&', 'a', 'devilf', 'f', 't', 'devier', 'bejing', 'shanghai', 'use']
>>>
- 4)其他的插入方式
>>> name=["&&","a","f","t","devier"]
>>> names[3]="lebon"
>>> print(names)
['&&', 'a', 'devilf', 'lebon', 't', 'devier', 'bejing', 'shanghai', 'use']
2.删除
pop,remove,del,clear
- 1)pop()
>>> names=['a','b','c','d','e']
>>> names.pop()
'e'
>>> names
['a', 'b', 'c', 'd']
>>> names.pop(2)
'c'
>>> names
['a', 'b','d']
>>>
- 2)del()
>>> names=['a','b','c','d','e','f','e']
>>> del names[4]
>>> names
['a', 'b', 'c', 'd', 'f', 'e']
>>>
- 3)remove()
>>> names=['a','b','c','d','e','f','e']
>>> names.remove('e')
>>> names
['a', 'b', 'c', 'd', 'f', 'e']
- 4)clear()
>>> names=['a','b','c','d','e','f','e']
>>> names.clear()
>>> names
[]
3.改
>>> li=['a','b','c','d']
>>> li[1]='cc'
>>> li
['a', 'cc', 'c', 'd']
>>> ['a','b','c','d']
['a', 'b', 'c', 'd']
>>> li[0:2]=['aa','bb']
>>> li
['aa', 'bb', 'c', 'd']
>>>
4.查
切片去查,或者,循环去查
- 索引、切片、遍历
其他操作:
1.查找元素所在位置:index()
>>> names=['a','b','c','d','e']
>>> names.index('c')
2
2.统计元素的次数:count()
>>> names=['a','b','c','d','e']
>>> names.append('d')
>>> names.count('d')
2
>>>
3.反转:reverse()
>>> names=['a','b','c','d','e']
>>> names.reverse()
>>> names
['e', 'd', 'c', 'b', 'a']
>>>
4.排序:sort()按照ascii码来进行排序
>>> names=['a','b','c','d','e']
>>> names.insert(3,'&&')
>>> names
['a', 'b', 'c', '&&', 'd', 'e']
>>> names.sort()
>>> names
['&&', 'a', 'b', 'c', 'd', 'e']
>>> names.sort(reverse=True)
>>> names
['e', 'd', 'c', 'b', 'a', '&&']
>>>
5.对列表进行切片处理
- 1)列表所有的元素
>>> names=['a','b','c','d','e']
>>> names[::]
['a', 'b', 'c', 'd', 'e']
>>>
- 2)列出最后一个元素,从中间位置开始,列出后面所有的元素
>>> names=['a','b','c','d','e']
>>> names[-1]
'e'
>>>
names=['a','b','c','d','e']
>>> a=int(len(names)/2)
>>> names[a:]
['c', 'd', 'e']
>>>