首页 > 编程语言 >实验五 文件应用编程

实验五 文件应用编程

时间:2023-06-04 10:56:10浏览次数:33  
标签:文件 encoding 编程 实验 print line txt data

实验任务一

task1-1

实验源码

'''
统计文件data1.txt行数(不包括空白行)
data1.txt中的空白行包括由空格、Tab键(\t)、换行(\n)构成的空白行
'''
with open('data1.txt', 'r', encoding = 'utf-8') as f:
    data = f.readlines()
n = 0
for line in data:
    if not line.strip() == '':
        n += 1
print(f'data1.txt共{n}行')

  实验截图

task1-2

实验源码

'''
统计文件data1.txt行数(不包括空白行)
data1.txt中的空白行包括由空格、Tab键(\t)、换行(\n)构成的空白行
'''
with open('data1.txt', 'r', encoding = 'utf-8') as f:
    n = 0
    for line in f:
        if not line.strip() == '':
            n += 1
print(f'data1.txt共{n}行')

  实验截图

task1-3

实验源码

'''
统计文件data1.txt行数(不包括空白行)
data1.txt中的空白行包括由空格、Tab键(\t)、换行(\n)构成的空白行
'''
with open('data1.txt', 'r', encoding = 'utf-8') as f:
    n = 0
    for line in f:
        if not line.isspace():
            n += 1
print(f'data1.txt共{n}行')

  实验截图

实验任务二

实验源码

'''
统计数据文件data2.txt中独特行的行数
并打印输出独特行
'''
with open('data2.txt', 'r', encoding = 'utf-8') as f:
    data = f.read().split('\n')
unique_line_lst = []
for line in data:
    if data.count(line) == 1:
        unique_line_lst.append(line)
n = len(unique_line_lst)
print(f'data2.txt共{n}行独特行')
for line in unique_line_lst:
    print(line)

  实验截图

实验任务三

task3-1

实验源码

'''
把城市、人口信息写入数据文件city1.csv
使用python内置的文件操作实现
'''
title = ['城市', '人口(万)']
info = [['南京', '850'],
        ['纽约', '2300'],
        ['东京', '3800'],
        ['巴黎', '1000']]
with open('city1.csv', 'w', encoding = 'gbk') as f:
    f.write(','.join(title) + '\n') # 写入标题行
    for item in info: # 分行写入info
        f.write(','.join(

  实验截图

task3-2

实验源码

'''
从文件city1.csv读取城市、人口信息,打印输出到屏幕
使用python内置的文件读写操作实现
'''
with open('city1.csv', 'r', encoding = 'gbk') as f:
    data = f.read()
print(data.rstrip('\n'))

  实验截图

task3-3

实验源码

'''
从文件city1.csv读取城市、人口信息,将其保存到里列表对象,保存形式诸如:
info = [ ['城市', '人口(万)'],
['南京', '850'],
['纽约', '2300'],
['东京', '3800'],
['巴黎', '1000'] ]
在屏幕上打印输出列表对象
使用python内置的文件读写操作实现
'''
with open('city1.csv', 'r', encoding = 'gbk') as f:
    data = f.readlines()
# 打印中间处理结果(供查看)
print('data: ')
print(data)
info = [line.strip('\n').split(',') for line in data]
print('info:')
print(info)

  实验截图

task3-4

实验源码

import csv
title = ['城市', '人口(万)']
info = [['南京', '850'],
        ['纽约', '2300'],
        ['东京', '3800'],
        ['巴黎', '1000']]
with open('city2.csv', 'w', encoding = 'gbk', newline = '') as f:
    f_writer = csv.writer(f) # 为文件对象f创建一个writer对象
    f_writer.writerow(title) # 通过writer对象的方法writerow()写入一行(标题行)
    f_writer.writerows(info) # 通过writer对象的方法writerows()写入多行

  

task3-5

实验源码

'''
从文件city2.csv读取城市、人口信息,在屏幕上打印输出
使用python标准模块csv实现
'''
import csv
with open('city2.csv', 'r', encoding = 'gbk') as f:
    f_reader = csv.reader(f) # 为文件对象f创建一个reader对象
    for line in f_reader:
        print(line)

  实验截图

实验任务四

实验源码

'''
列出当前目录下所有.py文件
'''
import os, sys
print(os.path.basename(os.getcwd()))
# 将当前路径下所有.py文件名保存到py_file_lst中
py_file_lst = [file for file in os.listdir() if file.endswith('.py')]
# 遍历输出
for number, file in enumerate(py_file_lst, 1):
    print(f'{number:-3d}. {file}')

  实验截图

 实验任务五

实验截图

实验任务六

实验源码

 

with open('data6.csv','r',encoding='gbk') as f:
    data = f.readlines()
data1=[str(eval(data[i])) for i in range(1,len(data))]
data2=[str(int(eval(data[i])+0.5)) for i in range(1,len(data))]
info=[[data1[i],data2[i]] for i in range(len(data1)) ]
title = ['原始数据','四舍五入后数据']

with open('data6_processed.csv', 'w', encoding = 'gbk') as f:
    f.write(','.join(title) + '\n') # 写入标题行
    for item in info:
        f.write(','.join(item) + '\n')
ls1 = []
ls2 = []
with open('data6_processed.csv', 'r', encoding = 'gbk') as f:
    data3=f.readlines()
for i in range(1,len(data3)):
    data4=data3[i].split(',')
    ls1.append(data4[0].strip())
    ls2.append(data4[1].strip())
print('原始数据')
print(ls1)
print('四舍五入后数据')
print(ls2)

  

  实验截图

 实验任务七

 task7-1

实验源码

#实验五
#实验任务七
with open('data7.csv','r',encoding='gbk') as f:
    data1 = f.read().split('\n')
del data1[0]
lsta = []
lstm = []
for i in data1:
    lst1 = i.split(',')
    if lst1[2] == 'Acting':
        lsta.append(lst1)
    else:lstm.append(lst1)
lstm.sort(key=lambda x:x[-1],reverse = True)
lsta.sort(key=lambda x:x[-1],reverse = True)
info = lsta + lstm
title = ['学号','姓名','专业','分数']
with open('data7_processed.csv','w',encoding='utf-8') as f:
    f.write(','.join(title)+'\n')
    for items in info:
        f.write(','.join(items)+'\n')
print('{:<10}'.format(title[0]),'{:<10}'.format(title[1]),'{:<10}'.format(title[2]),'{:<15}'.format(title[3]))
for i in info:
    print('{:<10}'.format(i[0]),'{:<10}'.format(i[1]),'{:<10}'.format(i[2]),'{:<15}'.format(i[3]))

  实验截图

实验任务八

实验源码

lines = 0
words = 0
sum1 = 0
space = 0
with open('hamlet.txt','r',encoding='utf-8') as f:
    for line in f:
        word = line.split()
        lines += 1
        words += len(word)
        sum1 += len(line)
        for i in line:
            if i == ' ':
                space += 1
            else:
                pass
print('hamlet.txt粗滤统计:')
print(f'行数:{lines}')
print(f'单词数:{words}')
print(f'字符数:{sum1}')
print(f'空格数:{space}')

with open('hamlet.txt','r',encoding = 'utf-8') as f:
    text = f.readlines()

for i in range(len(text)):
    text[i] = str(i+1) + ' ' + text[i]

with open('hamlet_with_line_number.txt','w',encoding = 'utf-8') as f:
    f.writelines(text)

  实验截图

实验任务九

实验源码

def is_valid(sfz):
    if len(sfz) != 18:
        return False
    elif (sfz[:-1].isnumeric() and sfz[-1] == 'X') or sfz.isnumeric():
        return True
    else:return False


with open('data9_id.txt','r',encoding='utf-8') as f:
    data = f.read().split('\n')
del data[0]
data2 = []
data3 =[]
print('姓名,出生日期,年龄')
for i in data:
    lst = i.split(',')
    data2.append(lst)
lst2 = []
for i in data2:
    if is_valid(i[1]) == True:
        name = i[0]
        btd = i[1][6:14]
        age = str(2023 - int(i[1][6:10]))
        lst2.append([name,btd,age])
lst2.sort(key=lambda x:x[2],reverse=True)
for i in lst2:
    print(i[0],end=',')
    print(f'{i[1][:4]}-{i[1][4:6]}-{i[1][6:8]}',end=',')
    print(i[2])

  实验截图

实验任务十

实验源码

with open('data10_stu.txt','r',encoding='utf-8') as f:
    data = f.readlines()
print('{:*^40}'.format('抽点开始'))
n = int(input('输入随机抽点人数:'))
import random
x = []
x2 = ''
counts = 0
while counts < n:
    new = random.randint(0, len(data) - 1)
    if new in x:
        new = random.randint(0, len(data) - 1)
    else:
        counts +=1
        x.append(new)
sum1 = 0
for i in range(n):
    print(data[x[i]])
    x2 += data[x[i]]
    sum1 += n
with open('20230602.txt','w',encoding='utf-8') as f:
    f.writelines(x2)

  实验截图

task10-2

实验源码

with open('data10_stu.txt','r',encoding='utf-8') as f:
    data = f.readlines()
print('{:*^40}'.format('抽点开始'))
n = int(input('输入随机抽点人数:'))
import random
x = []
sum1 = 0
x2 = ''
while n != 0:
    counts = 0
    while counts < n:
        new = random.randint(0, len(data) - 1)
        if new in x:
            new = random.randint(0, len(data) - 1)
        else:
            counts +=1
            x.append(new)
    for i in range(sum1,sum1+n):
        print(data[x[i]])
        x2 += data[x[i]]
    sum1 += n
    n = int(input('输入随机抽点人数:'))

with open('20230602.txt','w',encoding='utf-8') as f:
    f.writelines(x2)

print('{:*^40}'.format('抽点结束'))

  实验截图

 

标签:文件,encoding,编程,实验,print,line,txt,data
From: https://www.cnblogs.com/laix/p/17445447.html

相关文章

  • p1 文件的基本使用
    文件的基本使用一、文件什么是文件文件是保存数据的地方,比如word文档,txt文件,excel文件……都是文件。即可以保存一张图片,也可以保持视频,声音……文件流文件在程序中是以流的形式来操作的流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存......
  • msi和exe文件区别
    msi是Windowsinstaller开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序.说白了msi就是Windowsinstaller的数据包,把所有和安装文件相关的内容封装在一个包里了.setup.exe也允许你安装程序,但程序员在开发setup.exe的时候要比开发setup.msi困难的多,需要人工编写......
  • windows按修改日期范围搜索文件
    *Mapper.xml修改日期:2021/‎9/‎21..‎2021/‎9/‎28......
  • 文件名特殊字符去除
    java去掉特殊字符工具类packagecom.pig4cloud.pigx.edi.utils;importjava.util.Arrays;/***文件名去掉特殊字符*/publicclassFileNameCleanerUtil{finalstaticint[]illegalChars={34,60,62,124,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,1......
  • HTTP Boot(即基于HTTP的引导)是一种网络引导协议,它使用HTTP作为文件传输协议,支持远程引
    HTTPBoot(即基于HTTP的引导)是一种网络引导协议,它使用HTTP作为文件传输协议,支持远程引导、安装和部署操作系统和应用程序。与传统的PXE(PrebooteXecutionEnvironment)方式相比,HTTPBoot具有更高的灵活性、可扩展性和安全性。HTTPBoot可以通过以下步骤实现:启动计算机后,BIOS会向......
  • TypeScript编程 读书笔记
    @目录TypeScript编程读书笔记TypeScript概述关于编译器类型系统javascript和typescript类型系统比较类型全解什么是类型类型术语类型浅谈anyunknownbooleannumberbigintstringsymbol对象类型别名、并集、交集类型别名并集类型和交集类型数组元组null、undefined、void和never枚举......
  • 【实验】粒子群算法的超参数优化
    粒子群算法的超参数优化粒子群算法概述粒子群优化算法(ParticleSwarmOptimization)是由美国的Kennedy和Eberhart两位博士提出的一种优化算法。这种算法基于Boid模型。Reynolds通过观察自然界中,鸟类聚集飞行的行为,提出了Boid模型。在Boid中,每个个体是一个Boid,它们各自均可感知......
  • 【实验】遗传算法的超参数优化
    wine数据集分类结果GridSearchbestparameters:{'algorithm':'SAMME','learning_rate':0.3593813663804626,'n_estimators':60}bestscore:0.9720634920634922TimeElapse:113.00295925140381GridSearchBasedGABest......
  • 【实验】语音识别
    为学校数字信号处理实验总结和归纳;语音识别题目及相关要求在here.数据预处理大致步骤:获取原始音频检测分帧加窗特征提取端点检测端点检测参数指标相对值初始短时能量高门限50初始短时能量低门限10初始短时过零率高门限10初始短时过......
  • winform中使用yaml配置文件
    1、引入nuget包NetEscapades.Configuration.YamlMicrosoft.Extensions.Configuration.Binder引入上面两个包2、新增yaml文件可以新增到目录中,也可以放在根目录,我这边新增到了Conf文件夹中。创建一个Conf文件夹,然后里面创建一个myconfig.yaml文件。......