python - CSV to text file layout -
i outputting 2 columns of csv file text file , printing on single line in text file. this:
product name counter({'descriptions': 1, 'descriptions':3}) but want print out this:
product name counter({'descriptions': 1, 'descriptions': 3}) here code have far:
import csv import sys collections import defaultdict collections import counter data = defaultdict(list) class dictionary: open ('practice.csv', 'rb') f: reader = csv.reader(f) next(reader, none) row in reader: data[row[2]].append(row[3]) text_file = open("test.txt", "w") data_count = counter() key in data.keys(): sys.stdout = text_file print key, counter(data[key]) text_file.close() how can text file not print out on 1 line? not sure how work.
the counter({'descriptions': 1, 'descriptions':3}) stuff output of counter's __str__() function. when use print counter(stuff), implicitely called new object generated counter(stuff). if understand correctly, want reformat output.
you storing output of counter(data[key]) in variable , modify output adding newlines @ positions of , in output:
a = str(counter(data[key])) print '\n'.join(a.split(',')) which quite ugly ;-)
you could, however, design ouptut yourself: keys of counter accessible via a.keys(), add loop:
a = counter(data[key]) print key, 'counter({', counter_key in a.keys(): print counter_key + ': ' + a[counter_key] + ',' print '})' which iterates on content of counter , outputs key-value combination counter line line.
edit: second part of code this:
text_file = open("test.txt", "w") key in data.keys(): text_file.writelines(key + ' counter({') counted = counter(data[key]) counter_key in counted.keys(): text_file.writelines(' ' + counter_key + ': ' + counted[counter_key] + '\n') text_file.writelines('})\n') text_file.close() note: it's possible iterate on key/value pairs in counter using
for counter_key, counter_value in counted.items():
Comments
Post a Comment