ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【python】实验1项目3 文件的读写,编码和解码

2021-07-03 22:07:01  阅读:200  来源: 互联网

标签:utf python 解码 winner 战队 scores print txt 读写


文件的读写,编码和解码
小练习1:# 1.分别使用gbk和utf-8编码自己的名字,并将其打印出来。 # 2.复制上一步得到的结果,进行解码,打印出你的名字(两次)。3.使用gbk解码:b’\xb4\xf3\xca\xfd\xbe\xdd2018\xbc\xb6\xbf\xba\xb0\xef\xd7\xd3’

小练习2:通过文件读写命令,读取 photo1 里的数据。如下图,可以点击右键另存为photo1。然后,新建名为“photo2”的图片(在同一个文件夹),写入读到的数据,完成了图片的复制。

小练习3:完成文件转移之间的数据处理,让数据发生变化
有一个文件名字叫:‘吃鸡排行.txt’打开之后看到如下:
大数据第一战队_落地成盒 23 35 44 90 70
大数据第二战队_跑毒 60 77 68 88 90
大数据第三战队_神打野 97 99 89 91 99
大数据第四战队_ 鱼塘局 85 90 98 89
先把以上四行存为单独一个txt文件;1. 通过读取txt文件,打印出来每个战队的名字和总分,例如
大数据第一战队_落地成盒262
大数据第二战队_跑毒383
……
……
2把上面4行内容,存为列表并且写入一个名叫winner.txt文件中
3让战队的成绩从高到低排列,然后放到新文档“winner_new.txt”。
提示:对于3,可能要用到re包,字典、sorted()\zip()\map()\re.findall()\re.compile()

解题思路:3.1使用gbk和utf-8编码,以及解码
3.2打开图片,新建文件存图片
3.3.1&3.3.2打开‘吃鸡排行.txt’,读取文件,存为列表并且写入文件,进行排列,再存到新文件
1.3.1

# 1.分别使用gbk和utf-8编码自己的名字,并将其打印出来。
print('茹'.encode('utf-8'))
print('茹'.encode('gbk'))
# 2.复制上一步得到的结果,进行解码,打印出你的名字(两次)。
print(b'\xe5\xbc\xa0\xe4\xba\x9a\xe8\x8c\xb9'.decode('utf-8'))
print(b'\xd5\xc5\xd1\xc7\xc8\xe3'.decode('gbk'))
# 3.使用gbk解码。
print(b'\xb4\xf3\xca\xfd\xbe\xdd2018\xbc\xb6\xbf\xba\xb0\xef\xd7\xd3'.decode('gbk'))
print("Tans.plt")

1.3.2

with open('photo1.png','rb') as file:  # 以“rb”模式打开图片
    data = file.read()
    with open('photo2.png','wb') as newfile:  # 以“wb”模式写入
        newfile.write(data)
print("plt")

1.3.3.1

file1 = open('吃鸡排行.txt','r',encoding='utf-8')
file_lines = file1.readlines()
file1.close()

final_scores = []

for i in file_lines:
    data =i.split()
    sum = 0
    for score in data[1:]:
        sum += int(score)  # 然后依次加起来,但分数是字符串,所以要转换
    result = data[0]+str(sum)+'\n'  # 结果就是学生姓名和总分
    print(result)
    final_scores.append(result)


sum1 = open('winner.txt','w',encoding='utf-8')
sum1.writelines(final_scores)
sum1.close()
print("plt")

1.3.3.2

file1 = open('winner.txt','r',encoding='utf-8')
file_lines = file1.readlines()
file1.close()

dict_scores = {}
list_scores = []
final_scores = []

for i in file_lines:
    name = i[:-4]  #取名字
    score = int(i[-4:-1])  # 取分数
    dict_scores[score] = name
    list_scores.append(score)
list_scores.sort(reverse=True)
for i in list_scores:
    result = dict_scores[i] + str(i) + '\n'
    final_scores.append(result)
    print(result)
print(final_scores)

winner_new = open('winner_new.txt','w',encoding='utf-8')
winner_new.writelines(final_scores)
winner_new.close()
print("Tans.plt")

标签:utf,python,解码,winner,战队,scores,print,txt,读写
来源: https://blog.csdn.net/qq_49081198/article/details/118445605

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有