Python Forum

Full Version: Reading and manipulating csv
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
but how can i add them into one column?Please explain the concept also. Please check my output file like how i want my output to be
There may be an item or two that needs tweaking, (need to eliminate None items) but it's very close:
import csv
from itertools import groupby,chain
from operator import itemgetter
import os

facilities = {
    '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():
    # Make sure in src directory to start
    os.chdir(os.path.abspath(os.path.dirname(__file__)))

    save_id = None
    outvals = []
    with open("facility_data.csv", encoding="ISO-8859-1") as fp, open('new_facilities.csv', 'w') as fo: 
        crdr = csv.reader(fp, delimiter=',')
        for row in crdr:
            id = row[0]
            if save_id == None:
                save_id = id
            rvalue = row[1]
            if id != save_id:
                if save_id is not None:
                    if len(outvals):
                        outstr = ','.join(outvals)
                        outstr = f'{save_id},{outstr}'
                    else:
                        outstr = f'{save_id},None'
                    fo.write(f'{outstr}\n,,\n')
                    outvals = []
                save_id = id
            for facid, values in facilities.items():
                if rvalue in values:
                    outvals.append(f'{rvalue}-{facid}')


if __name__ == '__main__':
    main()
partial results:
Output:
xid,None ,, R3,swimming_pool-Facility2,gymnasium-Facility1 ,, R5,swimming_pool-Facility2,gymnasium-Facility1 ,, R6,swimming_pool-Facility2,gymnasium-Facility1 ,, R9,swimming_pool-Facility2,gymnasium-Facility1 ,, R10,swimming_pool-Facility2,gymnasium-Facility1 ,, R703,swimming_pool-Facility2,gymnasium-Facility1 ,, R17,swimming_pool-Facility2,gymnasium-Facility1 ,, R18,swimming_pool-Facility2,gymnasium-Facility1 ,, R20,swimming_pool-Facility2,gymnasium-Facility1 ,, R23,swimming_pool-Facility2,golf_course-Facility2 ,, R26,swimming_pool-Facility2,gymnasium-Facility1 ,,
Pages: 1 2