栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

继承json和csv文件操作作业

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

继承json和csv文件操作作业

作业1:

将酒店数据按照地区分类放入每个地区对应的csv文件中:

import csv

# 1). 读取文件
reader = csv.DictReader(open('files/北京高档酒店价格分析.csv', encoding='utf-8', newline=''))
# print(list(reader))
# 2). 获取键
keys = list(list(reader)[0].keys())
# print(keys)

# 3).遍历到每一个数据(字典),判断是哪个区,然后写入对应的文件中
reader = csv.DictReader(open('files/北京高档酒店价格分析.csv', encoding='utf-8', newline=''))
for x in list(reader):
    print(x)
    if x['地区'] == '朝阳区':
        writer = csv.DictWriter(open('files/朝阳区.csv', 'a', encoding='utf-8', newline=''), keys)
        # 判断是第一个就写入头部数据
        reader1 = csv.reader(open('files/朝阳区.csv', encoding='utf-8', newline=""))
        if not [x for x in reader1]:
            writer.writeheader()
        else:
            writer.writerow(x)

    elif x['地区'] == '东城区':
        writer = csv.DictWriter(open('files/东城区.csv', 'a', encoding='utf-8', newline=''), keys)
        reader2 = csv.reader(open('files/东城区.csv', encoding='utf-8',newline=''))
        if not [x for x in reader2]:
            writer.writeheader()
        else:
            writer.writerow(x)

    elif x['地区'] == '海淀区':
        writer = csv.DictWriter(open('files/海淀区.csv', 'a', encoding='utf-8', newline=''), keys)
        reader3 = csv.reader(open('files/海淀区.csv', encoding='utf-8', newline=""))
        if not [x for x in reader3]:
            writer.writeheader()
        else:
            writer.writerow(x)
    else:
        writer = csv.DictWriter(open('files/其他城区.csv', 'a', encoding='utf-8', newline=''), keys)
        reader4 = csv.reader(open('files/其他城区.csv', encoding='utf-8', newline=""))
        if not [x for x in reader4]:
            writer.writeheader()
        else:
            writer.writerow(x)

作业2:
# 作业2:
# 基于落户积分文件:
# 1)计入所有人的平均年龄
# 1.读文件
from  time import  *
from datetime import  *

reader = csv.DictReader(open('files/2018年北京积分落户数据 (1).csv', encoding='utf-8', newline=''))
age = [(2022 - eval(x['birthday'][:4])) for x in reader]
print(f'平均年龄:{sum(age) // len(age)}岁')


# 2)修改每个人的生日,随机添加日(1-28);或判断月份添加
# 第一种,是普通闰年,能被4整除但不能被100整除(如2008年就是普通闰年);
# 第二种,比较少见的,世纪闰年:能被400整除(如2000年是世纪闰年,1900年不是世纪闰年)

import random
reader = csv.DictReader(open('files/2018年北京积分落户数据 (1).csv', encoding='utf-8', newline=''))
keys = list(list(reader)[0])
# print(keys)
write = csv.DictWriter(open('files/2018年北京积分落户数据 (修改).csv', 'w', encoding='utf-8', newline=''),keys)
write.writeheader()
# print(list(reader))

reader = csv.DictReader(open('files/2018年北京积分落户数据 (1).csv', encoding='utf-8', newline=''))
for x in reader:
    year = eval(x['birthday'][:4])
    month = x['birthday'][5:7]
    # print(month)
    if month in ('01', '03', '05', '07', '08', '10', '12'):
        day = str(random.randint(1, 31))
        x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
        write.writerow(x)

    elif month in ('04', '06', '09', '11'):
        day = str(random.randint(1, 30))
        x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
        write.writerow(x)

    # 如果是二月份分平闰年讨论
    else:
        # 如果是闰年
        if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
            day = str(random.randint(1, 29))
            x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
            write.writerow(x)

        else:
            day = str(random.randint(1, 28))
            x['birthday'] = x['birthday'] + '-' + day.rjust(2,'0')
            write.writerow(x)



# 3)将所有狮子座的人对应的数据放入到一个单独的csv文件中
# 狮子座的日期: 7月23日-8月22日
reader = csv.DictReader(open('files/2018年北京积分落户数据 (修改).csv', encoding='utf-8', newline=''))
write = csv.DictWriter(open('files/狮子座.csv', 'w', encoding='utf-8', newline=''), keys)
write.writeheader()
for x in reader:
    mothon_day = x['birthday'][5:]
    # print(mothon_day)
    day1 = mothon_day[3:]
    if mothon_day[:2] == '07':
        if day1[0] == '0':
            day1 = day1[-1]

        if eval(day1) >= 23:
            write.writerow(x)

    elif mothon_day[:2] == '08':
        day1 = mothon_day[3:]
        if day1[0] == '0':
            day1 = day1[-1]

        if eval(day1) <= 22:
            write.writerow(x)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号