简体   繁体   中英

How to read list which contains comma from CSV file as a column?

I want to read CSV file which contains following data :

Input.csv-

 10,[40000,1][50000,5][60000,14]
 20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
 30,[60000,4]
 40,[40000,5][50000,14]

I want to parse this CSV file and parse it row by row. But these lists contains commas ',' so I'm not getting correct result.

Program-Code-

if __name__ == "__main__":

    with open(inputfile, "r") as f:
        reader = csv.reader(f,skipinitialspace=True)
        next(reader,None)
        for read in reader:
            no = read[0]
            splitted_record = read[1]          
            print splitted_record

Output-

[40000
[40000
[60000
[40000

I can understand read.csv method reads till commas for each column. But how I can read whole lists as a one column?

Expected Output-

[40000,1][50000,5][60000,14]
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
[60000,4]
[40000,5][50000,14]

Writing stuff to other file-

name_list = ['no','splitted_record']
file_name = 'temp/'+ no +'.csv'
if not os.path.exists(file_name):
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
    writer.writeheader()
else:
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
writer.writerow({'no':no,'splitted_record':splitted_record})

How I can write this splitted_record without quote "" ?

you can join those items together, since you know it split by comma

if __name__ == "__main__":

    with open(inputfile, "r") as f:
        reader = csv.reader(f,skipinitialspace=True)
        next(reader,None)
        for read in reader:
            no = read[0]
            splitted_record = ','.join(read[1:])          
            print splitted_record

output

[40000,1][50000,5][60000,14]
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
[60000,4]
[40000,5][50000,14]

---update--- data is the above output

with open(filepath,'wb') as f:
     w = csv.writer(f)
     for line in data:
         w.writerow([line])

You can use your own dialect and register it to read as you need. https://docs.python.org/2/library/csv.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM