天天看点

Python走一遍A-Z的字符串使用(九)

字符串读取:

names=['NJ','JS','SZ','BJ','JS','LYG','JS','GZ','TG','nj','1','#']

print(names[1:2])

print(names[4])

print(names[::2])#  每隔两个元素,获取一个

print(names[1:-1])

print(names[-1:1])

print(names[1][0])

运行结果:

['JS']

JS

['NJ', 'SZ', 'JS', 'JS', 'TG', '1']

['JS', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1']

[]

J

追加&复制&统计&合并

names.append(['123','456'])  #追加,默认追加到列表最后面

print(names)

#names.clear()

names_copy=names.copy() #复制一份列表

print(names_copy)

print(names.count('JS')) #统计字符串个数

names.extend(['111','222'])  #追加,合并列表

['NJ', 'JS', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1', '#', ['123', '456']]

3

['NJ', 'JS', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1', '#', ['123', '456'], '111', '222']

插入&索引&反转&排序

names.insert(2,'b') #把字符b插入到列表里,1是插入的位置

print(names.index('LYG')) #打印LYG的下标

print(names.pop())  #默认删除最后一个

print(names.pop(2))   #指定删除位置,并打印删除的字符

names.reverse()  #反转列表

names.remove(['123', '456'])  #移除

print(names)                          

names.sort() #给列表排序g

['NJ', 'JS', 'b', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1', '#', ['123', '456'], '111', '222']

6

222

b

['111', ['123', '456'], '#', '1', 'nj', 'TG', 'GZ', 'JS', 'LYG', 'JS', 'BJ', 'SZ', 'JS', 'NJ']

['111', '#', '1', 'nj', 'TG', 'GZ', 'JS', 'LYG', 'JS', 'BJ', 'SZ', 'JS', 'NJ']

['#', '1', '111', 'BJ', 'GZ', 'JS', 'JS', 'JS', 'LYG', 'NJ', 'SZ', 'TG', 'nj']

拷贝番外篇:

1、copy模块

import copy  #运用模块

list_copy=['11','22','33','44',['Shenzhen',['11','22'],'Guangzhou','Changsha'],'55','66']

print(list_copy)

list_deep=copy.deepcopy(list_copy) #深copy(看下面注解)

list2=copy.copy(list_copy) #浅copy(看下面注解)

list_copy[4][1][0]='aa'

list_copy[2]='cc'

print(list_deep)

print(list2)

['11', '22', '33', '44', ['Shenzhen', ['11', '22'], 'Guangzhou', 'Changsha'], '55', '66'] #原始数据

['11', '22', 'cc', '44', ['Shenzhen', ['aa', '22'], 'Guangzhou', 'Changsha'], '55', '66']

['11', '22', '33', '44', ['Shenzhen', ['11', '22'], 'Guangzhou', 'Changsha'], '55', '66'] #deepcopy结果

['11', '22', '33', '44', ['Shenzhen', ['aa', '22'], 'Guangzhou', 'Changsha'], '55', '66'] #浅copy结果

2、copy()

list1=list_copy.copy()

print(list1)

['11', '22', '33', '44', ['Shenzhen', ['11', '22'], 'Guangzhou', 'Changsha'], '55', '66']

['11', '22', '33', '44', ['Shenzhen', ['aa', '22'], 'Guangzhou', 'Changsha'], '55', '66']

注:

深copy与浅copy

共同点:不会因为列表的父层变动而变动

不同点:子列表修改时,浅copy会跟随变动而变动,而深copy不会变动。

extent()函数与append()函数区别

注:def是 python的函数,后面会介绍。

def changeextent(str):

    'Please string with extent'

    info.extend(['40','50','60']

    print('extent>>>',info)

    return

def changeappend(str):

    'Please string with append'

    info.append(['70','80','90']

    print('append>>>',info)

info= ['10','20','30']

changeappend(info)

print('Please append str',info)

changeextent(info)

print('Please extent str',info)

append>>> ['10', '20', '30', ['70', '80', '90']]

Please append str ['10', '20', '30', ['70', '80', '90']]

extent>>> ['10', '20', '30', ['70', '80', '90'], '40', '50', '60']

Please extent str ['10', '20', '30', ['70', '80', '90'], '40', '50', '60']

结论:

1.列表可以包含任何数据类型的元素,单个列表中的元素无须全为同一个类型

2.append()函数只在尾部追加

3.列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。extent()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。

字符串常用操作:

#字符串常用操作

list='abccd'

lis='!!'

print(list.count('C')) #统计字符

print(list.capitalize()) #首字母大写 等同于print('abc'.title())

print(list.center(50,'-')) # 保持字符串在中心位置,不够的用(-)补足。

# list.encode() 指定编码格式编码字符串

print(list.endswith(lis)) #用于判断字符串是否有指定后缀结尾,如果有则返回True,否则False

list_t='aaa\tbbbcccddd'

print('原始str:',list_t)    #

print('替换 \\t:' + list_t.expandtabs())  #把字符串里面\t转换为空格

print('用10空格替换 \\t:'+ list_t.expandtabs(tabsize=10)) #将Tab键,转换为10个空格

print(list_t.find('a'))  #查找字符所在位置(查下标)

print('网名:{name},网址:{url}'.format(name='baidu',url='http:///www.baidu.com'))  #格式化字符串,作用等同于%,不过format部分类型,操作更简单。

# 推荐使用,这里就不细讲了,后面会补充格式化字符串相关博客

'''

list_t.format_map() #有兴趣的自己查阅资料

list_t.index() # 检测是否包含子字符串str,如果指定beg(开始)和end(结束)范围,则检查是否包含在指定范围内,该方法与find()方法一样,只不过str不在string会报错

list_t.isdigit() #检查字符串为整数则返回 真。

list_t.isidentifier() #判断呢是不是一个合法的标示符。了解即可

list_t.isalnum() #检测字符串是否由字母和数字组成,True&False

list_t.isalpha() #检测字符串是否由字母组成,True&False

list_t.isdecimal()#检测字符串是否只包含十进制字符。这种方法只存在与unicode对象,True&False

list_t.isnumeric() #检测字符串是否由数字组成。这种方法只存在与unicode对象,True&False

list_t.isprintable() #

list_t.isspace() #检测字符串是否由空白字符组成 True&False

list_t.istitle()#检查字符串是否首写字母为大写,其他为小写  True&False

list_t.islower() #检测字符串是否由小写字母组成 True&False

list_t.isupper() #检测字符串是否由大写字母组成 True&False

Abccd

----------------------abccd-----------------------

False

原始str: aaabbbcccddd

替换 \t:aaa     bbbcccddd

用10空格替换 \t:aaa       bbbcccddd

list_t=('a','b','c')

print('+'.join(list_t)) #通过指定字符链接序列中元素后生成新的字符串

a+b+c

#.maketrans() #用于创建字符映射的转换表,对于接受的两个参数的最简单调用方式,第一个参数为字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

#语法:

maketrans()方法语法:

str.maketrans(intab, outtab)

参数

intab -- 字符串中要替代的字符组成的字符串。

outtab -- 相应的映射字符的字符串。

#两个字符长度一致,必须一一对应。

intab1 = "aeiou"

outtab1 = "12345"

trantab1 = str.maketrans(intab1, outtab1) 

str = "this is string example....wow!!!"

print (str.translate(trantab1))

th3s 3s str3ng 2x1mpl2....w4w!!!

translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符,要过滤掉的字符放到 deletechars 参数中。

语法

translate()方法语法:

str.translate(table[, deletechars]); 

bytes.translate(table[, delete])    

bytearray.translate(table[, delete]) 

table -- 翻译表,翻译表是通过 maketrans() 方法转换而来。

deletechars -- 字符串中要过滤的字符列表。

返回值

返回翻译后的字符串,若给出了 delete 参数,则将原来的bytes中的属于delete的字符删除,剩下的字符要按照table中给出的映射来进行映射 。

字符串补位:

list_t='abc'

print(list_t.ljust(10,'*'))  #保证字符串长度为10,不够用*号补位,补在字符串后面

print(list_t.rjust(10,'*'))  #保证字符串长度为10,不够用*号补位,补在字符串前面

abc*******

*******abc

字符串大小写:

list_l='EDC'

print(list_l.lower())  #字符串大写变小写

print(list_t.upper())  #字符串小写变大写

edc

ABC

移除字符:(strip 用于移除字符串两边的字符,默认移除空格)

str = "*****this is string example....wow!!!*****"

print (str.strip( '*' )) #去掉两边 *号字符

print(str.lstrip('*')) #去掉左边 *号字符

print(str.rstrip('*')) #去掉右边 *号字符

this is string example....wow!!!

this is string example....wow!!!*****

*****this is string example....wow!!!

切片:

print('ALex Li'.rfind('L')) # 与find相反,已右边第一个为准输出下标

print('1=2=3=4'.split('='))  #通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串

print('abc'.title()) #首字母大写

print('Ab'.swapcase())  #字母大小,反写。 大的变小,小的变大

5

['1', '2', '3', '4']

Abc

aB

替换:

print('Alex li'.replace('l','L',1))  #替换字符。把l替换成L。默认替换所有,后面可以指定替换个数。

ALex li

.splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符

.startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。

.rindex() 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。

.replace() #replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

.zfill() # zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。

<a href="http://down.51cto.com/data/2368744" target="_blank">附件:http://down.51cto.com/data/2368744</a>

本文转自白羊IT51CTO博客,原文链接:http://blog.51cto.com/000011211684/1981785,如需转载请自行联系原作者