一道面试题大家拿去用吧,是转换图形的

1. Read a CSV table from stdin.
2. Reshape the table by collapsing several columns into two.
3. Write the reshaped data to stdout

 

import csv,sys

#输入数据
def input_data():
    in_data_list = []
    while True:
        row = sys.stdin.readline().strip()
        if row =="":
            break
        li = row.split(",")

        in_data_list.append(li)
    out_data_list=[]

    for line in in_data_list:
        if "first" not in locals():
            first = True
            onefidle = line[0]
            twofidle = line[1]
            threefidle = line[2]
        else:
            d_temp={}
            d_temp[onefidle] = line[0]
            d_temp[twofidle] = line[1]
            d_temp[threefidle] = line[2]
            out_data_list.append(d_temp)
    return out_data_list


# write file to csv file
def  writeCVS(file,data):

    with open(file, 'w', newline='') as f:
        fieldnames = ['country', '1999', '2000']
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(data)


#change data
def changeCVS(file):
    rechange_list =[]
    with open(file, "r", encoding="utf-8") as f:
        reader = csv.DictReader(f)
        for row in reader:
            rechange_list.append({"country":row['country'],"year":1999,"cases":row['1999']})
            rechange_list.append({"country":row['country'],"year":2000,"cases":row['2000']})
    rechange_list.sort(key=lambda x:x["year"])
    with open("test.csv", 'w', newline='') as f:
        fieldnames = ['country', 'year', 'cases']
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(rechange_list)

def read_csv(file):

    with open(file, "r", encoding="utf-8") as f:
        reader = csv.reader(f)
        for row in reader:
            print(f"{row[0]},{row[1]},{row[2]}")



if __name__ == '__main__':
    #输入数据
    data =input_data()
    #写入数据到Csv中
    writeCVS('student3.csv',data)
    #转换数据格式存入test.csv中
    changeCVS('student3.csv')
    #从test.csv中读出转换后的数据
    read_csv('test.csv')

输入数据:

country,1999,2000
A,0.7K,2K
B,37K,80K
C,212K,213K

输出数据:

country,year,cases
A,1999,0.7K
B,1999,37K
C,1999,212K
A,2000,2K
B,2000,80K
C,2000,213K

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值