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=[‘NJ‘,‘JS‘,‘SZ‘,‘BJ‘,‘JS‘,‘LYG‘,‘JS‘,‘GZ‘,‘TG‘,‘nj‘,‘1‘,‘#‘]

names.append([‘123‘,‘456‘])  #追加,默认追加到列表最后面
print(names)
#names.clear()
names_copy=names.copy() #复制一份列表
print(names_copy)
print(names.count(‘JS‘)) #统计字符串个数
names.extend([‘111‘,‘222‘])  #追加,合并列表
print(names)

运行结果:

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

[‘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)
print(names.index(‘LYG‘)) #打印LYG的下标
print(names.pop())  #默认删除最后一个
print(names.pop(2))   #指定删除位置,并打印删除的字符
names.reverse()  #反转列表
print(names)
names.remove([‘123‘, ‘456‘])  #移除
print(names)                          
names.sort() #给列表排序g
print(names)

运行结果:

[‘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_copy)
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()
list_copy=[‘11‘,‘22‘,‘33‘,‘44‘,[‘Shenzhen‘,[‘11‘,‘22‘],‘Guangzhou‘,‘Changsha‘],‘55‘,‘66‘]
list1=list_copy.copy()
print(list1)
list_copy[4][1][0]=‘aa‘
list_copy[2]=‘cc‘
print(list_copy)
print(list1)

运行结果:

[‘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‘, [‘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)
    return
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
‘‘‘

运行结果:

0

Abccd

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

False

原始str: aaabbbcccddd

替换 \t:aaa     bbbcccddd

用10空格替换 \t:aaa       bbbcccddd

0

网名:baidu,网址:http:///www.baidu.com

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_t=‘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。
‘‘‘

时间: 2024-10-12 16:07:57

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

Python程序猿必知的新型字符串格式漏洞

本文对Python开发中引入的一种格式化字符串的新型语法的安全漏洞进行了深入的分析,并提供了相应的安全解决方案. 当我们对不可信的用户输入使用str.format的时候,将会带来安全隐患--对于这个问题,其实我早就知道了,但是直到今天我才真正意识到它的严重性.因为攻击者可以利用它来绕过Jinja2沙盒,这会造成严重的信息泄露问题.同时,我在本文最后部分为str.format提供了一个新的安全版本. 需要提醒的是,这是一个相当严重的安全隐患,这里之所以撰文介绍,是因为大多数人很可能不知道它是多么容

Python列表、元组、字典和字符串的常用函数

Python列表.元组.字典和字符串的常用函数 列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object合并.注意:object如果是整型,必须以列表的方式传入,不可以以整型或元组的方式传入 2.ls.append(object) 将object作为一个整体插入到ls最后,object可以是字符串,元组,列表和字典 3.ls.insert(index, object

python学习第二天:数字与字符串转换及逻辑值

1.数字与字符串的转化 #1.数字转字符,使用格式化字符串: *1.demo = ‘%d’  %  source *2.%d整型:%f 浮点型 :%e科学计数  *3.int('source') #转化为int型 #2.字符串转化为数字 *1.导入string :import string *2.demo = atoi(source)  #转换为整型’ atof()    #转为浮点型 2.逻辑值: and  #与 or  #或 not #非 python学习第二天:数字与字符串转换及逻辑值

15-07-03 语句- for () 循环语句-穷举法 for() 穷举法 用循环把各种可能的情况都走一遍,然后用if条件把满足要求的结果给筛选出来。

15-07-03 语句- for () 循环语句-穷举法 for()  穷举法 用循环把各种可能的情况都走一遍,然后用if条件把满足要求的结果给筛选出来. 例如: 1.找100以内的偶数 for (int i = 0; i <= 100; i++) { if (i % 2 == 0) { Console.WriteLine(i); } } 2.小明单位发了50元的购物卡,他到超市买洗化用品,一是牙刷(5元),二是香皂(2元),三是牙膏(10元)怎么可以正好把五十元花完. for (int ys

玩转python之测试一个对象是否是类字符串

提到类型测试,我首先想到python中“鸭子类型”的特点,所谓鸭子类型,即如果它走路像鸭子,叫声也像鸭子, 那么对于我们的应用而言,就可以认为它是鸭子了!这一切都是为了功能复用. 我们总是需要测试一个对象,尤其是当写一个函数或者方法时,经常需要测试传入的参数是否是一个字符串: 下面这个方法利用了内建的isinstance和basestring来简单快速检查某个对象是否是字符串或者Unicode对象: def is_string(anobj): return isinstance(anobj, b

【转载】Python使用中文正则表达式匹配指定中文字符串的方法示例

本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

Python学习笔记五_数据类型(字符串)

已经学习过的数据类型包括:int.float.list.tuple.dict.这篇来单独记录下字符串.单独将字符串这种数据类型写出来,是因为python里有很多非常有用的字符串内置方法. 一.字符串定义 字符串可以存任意类型的字符串,比如名字,一句话等等. 1 name = 'Rebecca' 2 msg = 'Fighting' 二.字符串内置方法 1.常用方法 输出为字符串的方法 a = 'my name is Rebecca' print(a.capitalize()) #将字符串的第一个

Python如何将整数转化成二进制字符串

Python 如何将整数转化成二进制字符串 1.你可以自己写函数采用 %2 的方式来算. >>> binary = lambda n: '' if n==0 else binary(n/2) + str(n%2) >>> binary(5) '101' >>> 2.采用 python 自带了方法 bin 函数,比如 bin(12345) 回返回字符串 '0b11000000111001', 这个时候在把0b去掉即可: >>> bin(

Python学习(八) 输出任意格式的字符串以及字符串的切片

在Python中想要输出一句话,如下 1 a='hello world' 2 print a 3 //打印出的是hello world 4 5 print 'hello \n world' 6 //打印出的是 7 //hello 8 //world 9 print '''hello 10 world 11 good 12 bye''' 13 //打印出的是 14 //hello 15 //world 16 //good 17 //bye 如果想要输出换行的字符串,可以再字符串中添加转义字符 '\