+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-07(1)

2019-08(109)

2019-09(120)

2019-10(17)

2019-11(1)

python3中字符串的切片练习

发布于2020-09-30 19:32     阅读(95)     评论(0)     点赞(30)     收藏(0)


0

1

2

3

4

5

6

python3中字符串的处理练习

eg1:
下面的log变量记录了云服务器上 当天上传的文件信息其中第一列是文件名,第二列是文件大小
请编写一个程序,统计出不同类型的 文件的大小总和
比如:
jpeg  9988999
json   324324
png   2423233
----------------------------------

log = '''
f20180111014341/i_51a7hC3W.jpeg	169472	FrITJxleSP7wUD-MWw-phL_KP6Eu	15156063244230469	image/jpeg	0	
f20180111014341/j_R0Hpl4EG.json	1036	ForGzwzV3e-uR3_UzvppJs1VgfQG	15156064773253144	application/json	0	
f20180111020739/i_0TDKs0rD.jpeg	169472	FrITJxleSP7wUD-MWw-phL_KP6Eu	15156076847077556	image/jpeg	0	
f20180111020739/j_JFO6xiir.json	1040	FmUhTchdLOd7LBoE8OXzPLDKcW60	15156077904192983	application/json	0	
f20180111090619/i_1BwNksbL.jpg	49634	FtXBGmipcDha-67WQgGQR5shEBu2	15156329458714950	image/jpeg	0	
f20180111090619/i_3BKlsRaZ.jpg	30152	FoWfMSuqz4TEQl5FT-FY5wqu5NGf	15156330575626044	image/jpeg	0	
f20180111090619/i_5XboXSKh.jpg	40238	Fl84WaBWThHovIBsQaNFoIaPZcWh	15156329453409855	image/jpeg	0	
f20180111090619/i_6DiYSBKp.jpg	74017	FrYG3icChRmFGnWQK6rYxa88KuQI	15156329461803290	image/jpeg	0	
f20180111090619/i_76zaF2IM.jpg	38437	Fui8g5OrJh0GQqZzT9wtepfq99lJ	15156334738356648	image/jpeg	0	
f20180111090619/i_B6TFYjks.jpg	37953	FleWqlK2W1ZmEgAatAEcm1gpR0kC	15156329464034474	image/jpeg	0	
f20180111090619/i_N9eITqj3.jpg	38437	Fui8g5OrJh0GQqZzT9wtepfq99lJ	

'''
注意:
将字符串切片,切片后的结果保存在列表当中!
解题方法一:
使用字符串分割的方式,分布将图片格式和图片大小分离出来。
#将处理过的数据存放在字典中
log_dict = {}

#字符串的每一行是一张图片的信息,这时候就要考虑怎么样把整个字符变成一行一行的,分别来处理,根据换行符\n切割
#根据\n来切割,保存在log_list的这个列表中
log_list = log.split("\n")
for one in log_list:  
    if one == "":
        continue  #如果发现空元素,则结束本次循环,进行下一次循环
    else:
        #根据制表符\t切割
        image_list = one.split("\t")

#切割完成后图片大小是列表中下标为1的元素,下标为0的元素是文件名,我们需要的是图片格式,所以要再次切割拿出图片格式

        #图片大小
        images_size = int(image_list[1])
        #图片类型
        images_type = image_list[0].split('.')[1]

        #如果图片类型已经存在于字典,那就根据图片类型,取出其所对应的值,做同类型累加
        if images_type in log_dict:
            log_dict[images_type] += images_size
        else:
            log_dict[images_type] = images_size
print(log_dict)
解题方法二:
使用正则表达式将字符串中的关键字进行匹配提取。
images = {}
import re #导入正则表达式方法

a = re.compile(r'\.(.\D+)\s(\d*)')#compile 函数的参数,就是正则表达式字符串。

image_list = a.findall(log)#compile对象的 findall 方法返回所有匹配的子串,放在一个列表中。
for one in image_list:
    image_type = one[0]
    image_size = int(one[1])
    if image_type in images:
        images[image_type] += image_size
    else:
        images[image_type] = image_size
print(images)
eg2:
请写一个程序
找出str1中所有str2中不存在的人名,并且找出str2中所有str1中不存在的人名
str1 = '''
熊宁
杰益

王伟伟

青芳

玉琴
焦候涛
莫福
杨高旺
唐欢欢
韩旭
'''
str2 = '''
焦候涛
熊宁
玉琴

骆龙

韩旭
杨高旺

杰益

莫福

伟伟

李福
'''

注意:使用函数做
def name_list(name):#定义函数
    name1=[]
    name_list1 = name.splitlines()#对字符串进行切片(splitlines()方法默认按照换行和空格进行切片)
    for i in name_list1:#对切片后的结果进行遍历,切片后的结果默认保存在列表中
        #对列表遍历时,将每个元素进行处理,将元素前后的空格去除掉。使用i.strip()方法。
        if i.strip() == '':
            continue #不满足条件时,此次遍历结束
        else:
           name1.append(i.strip())
    return name1 #调用函数时,将会返回列表name1
s1= set(name_list(str1))#  调用函数,并将返回的结果转换成集合形式
s2= set(name_list(str2))
a = s1-s2 #两个集合求差集即可
b = s2 -s1
print(a)
print(b)

eg3:
有如下的字符串,记录了三国人物的名字和年龄
ageTable = '''
    诸葛亮, 28
    刘备, 48
    刘琦, 25
    赵云, 32
    张飞, 43
    关羽, 45
'''
请写一个程序将其中 30岁以上和以下的人分别打印出来,类似这样
大于等于30岁的人有:
刘备
赵云
张飞
关羽
小于30岁的人有:
诸葛亮
刘琦
name_list = ageTable.splitlines() #对字符串进行切片处理
newname_list =[]
a1=[]
a2=[]
for name in name_list:
    if name.strip()=='':
        continue
    else:
        name1=name.strip().split(',') #将遍历出来的元素再次切片,结果保存在列表中
        newname_list.append(name1) #切片后的列表添加到新的列表中
        if int(name1[1])>=30: #判断元素年龄,需要转换数据类型
            a1.append(name1[0])
        else:
            a2.append(name1[0])
print(f'大于等于30岁的人有:')
for name in a1:
    print(name)
print(f'小于等于30岁的人有:')
for name in a2:
    print(name)

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 博客

作者:你太美丽

链接: https://www.pythonheidong.com/blog/article/555229/896c4a6df843eb835399/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)