如果您有每行字段的字典,则使用DictWriter。它有多个选项可以填写缺失字段的缺省值,或者忽略输出中不需要的额外字段。
实施例:
import csv
# Sample data converted to a list of lines.
datalines = '''\
Los Angeles,2,Southern California Medical Group,Medical Centers,CA,3.5
Cambridge,4,Harvard Square Shiatsu,Massage,MA,4.0
Kitchener,2,Faith & Glory Collective,Tattoo,ON,4.0
'''.splitlines()
# Specify the fields you want in the output.
# If your dictionaries have fields you don't want in the output, use extrasaction='ignore'
fields = 'name city state stars review_count main_category'.split()
# Python 3, use newline=''. Python 2 use 'wb' instead.
with open('test.tsv','w',newline='') as file:
writer = csv.DictWriter(file, fields, delimiter='\t', extrasaction='ignore')
writer.writeheader() # Writes headers specified by "fields"
for line in datalines:
# Converts input line into a dict in OP's format.
my_data = dict(zip('city review_count name main_category state stars'.split(),line.split(',')))
print(my_data)
writer.writerow(my_data)
输出来验证词典在OP的格式:
{'stars': '3.5', 'review_count': '2', 'name': 'Southern California Medical Group', 'city': 'Los Angeles', 'state': 'CA', 'main_category': 'Medical Centers'}
{'stars': '4.0', 'review_count': '4', 'name': 'Harvard Square Shiatsu', 'city': 'Cambridge', 'state': 'MA', 'main_category': 'Massage'}
{'stars': '4.0', 'review_count': '2', 'name': 'Faith & Glory Collective', 'city': 'Kitchener', 'state': 'ON', 'main_category': 'Tattoo'}
输出到test.tsv(→为标签):
name→city→state→stars→review_count→main_category
Southern California Medical Group→Los Angeles→CA→3.5→2→Medical Centers
Harvard Square Shiatsu→Cambridge→MA→4.0→4→Massage
Faith & Glory Collective→Kitchener→ON→4.0→2→Tattoo
是否一个或多个这个问题的答案做你想做什么?:http:// stackoverflow。com/questions/1885324/is-it-it-it-it-it-it-it-the-python-csv-dictreader –
但是Dict没有'fieldnames'属性..还有另一种方法吗? – Parker
'my_data'中的键没有定义的顺序,因为它是一个字典,而不是一个序列。 – martineau