阅读和操作csv

时间:2019-03-13 12:53:58

标签: python csv

我有一个包含两列的csv,另一方面,我的代码中有多个列表。

我正在循环浏览csv中每个数据的第二列,并检查它们是否已存在于已定义的列表中。

(如果存在)创建一个新的csv并添加它们。但是到目前为止,发生了什么事,它已经添加了数据,但是将它们分为不同的列,我希望将每个类别的数据归为一列,但要用逗号分隔。

下面是我的代码:

import csv
from itertools import groupby,chain
from operator import itemgetter

Facility1 = ["club_house", "gymnasium", "children’s_play_area", "24/7_water_supply", "power_back-up", "inter-com","lift"]
Facility2 = ["jogging_track", "swimming_pool", "aerobics_center", "badminton_court", "basketball_court", "beach_volleyball_court", "football_court", "golf_course", "lawn_tennis_court","yoga/meditation_center"]
Facility3 = ["crèche", "ATM", "car_wash_area", "community_hall", "banquet_hall", "garbage_disposal", "grocery_shop","library"]
Facility4 = ["fountains","landscape_gardens"]
Facility5 = ["gated_society"]
Facility6 = ["car_parking"]
Facility7 = ["CCTV_cameras"]
Facility8 = ["security_guards"]
Facility9 = ["pool_table", "carrom_room", "chess_room", "dart_board", "squash_court", "table_tennis_room", "skating_rink"]


def main():
    prj_structure = {}
    f = open("./facility_data.csv","r")
    data = f.read()
    f.close()
    lst = data.split("\n")
    prj = ""
    for i in range(1, len(lst)):
        val = lst[i].split(",")
        if len(val)>0:
            prj = val[0]
        if prj!="":
            if prj not in prj_structure.keys():
                prj_structure[prj] = []
            prj_structure[prj].append(val[1])
    return prj_structure

final_data = []

def readingfiles():
    global final_data
    data = main()
    for k,v in data.items():
        for i in v:
            sublist = []
            sublist.append(k)
            if i in Facility1:
                sublist.append(i+"-facility1")
            if i in Facility2:
                sublist.append(i+"-facility2")
            if i in Facility3:
                sublist.append(i+"-facility3")
            if i in Facility4:
                sublist.append(i+"-facility4")
            if i in Facility5:
                sublist.append(i+"-facility5")
            if i in Facility6:
                sublist.append(i+"-facility6")
            if i in Facility7:
                sublist.append(i+"-facility7")
            if i in Facility8:
                sublist.append(i+"-facility8")
            if i in Facility9:
                sublist.append(i+"-facility9")
            final_data.append(sublist)
    return final_data


def writefile(filename, alldata):
    global final_data
    with open(filename,"w")as csvfile:
        csvfile = csv.writer(csvfile, delimiter=",")
        csvfile.writerow("")
        for i in range(0, len(alldata)):
            csvfile.writerow(alldata[i])

def get_new():
    readingfiles()
    writefile("new_facilities.csv",[[k, *chain.from_iterable(r for _, *r in g)] for k, g in groupby(final_data, key=itemgetter(0))])
get_new()

随附的是我用来创建新csv的示例csv,其名称为facility_data.csv https://www.dropbox.com/s/ojos9x325g7viip/facility_data.csv?dl=0

并附带的是输出csv,我希望数据如何被命名为“ new_facilities.csv”

https://www.dropbox.com/s/cvbmdv3m43tquzl/new_facilities.csv?dl=0

0 个答案:

没有答案