import pandas as pd
data = [('01', ['name abc', 'age 32', 'address addr123']),
('02', ['name def', 'age 22'])] # example of a shorter row
df = pd.DataFrame.from_dict({i:{a.split()[0]:a.split()[1] for a in j} for i,j in data},
orient='index')
df.to_csv('filename.csv')
import csv
data = [('01', ['name abc', 'age 32', 'address addr123']), ('02', ['name def', 'age 22', 'address addr456 789'])]
with open(path_to_csv, 'w') as csv_file:
writer = csv.DictWriter(csv_file, 'id name age address'.split())
writer.writeheader()
for row_id, rest in data:
row = {'id': row_id}
for item in rest:
key, value = item.split(' ', maxsplit=1)
row[key] = value
writer.writerow(row)
arr = [('01', ['name abc', 'age 32', 'address addr123']), ('02', ['name def', 'age 22', 'address addr456'])]
columnName = ["id"]
output = []
for l in arr:
ID = l[0]
val = l[1]
line = str(ID) + '\t'
for x in val:
y = x.split(' ')
if y[0] not in columnName:
columnName.append(y[0])
line += str(y[1]) + '\t'
line += '\n'
output.append(line)
colLine = ''
for i in columnName:
colLine += str(i) + '\t'
colLine += '\n'
output = [colLine] + output
f = open("output.csv", 'w')
for x in output:
f.write(x)
f.close()
或者,您可以使用
pandas
,它肯定可以处理不同的行长度,例如:编辑:假设你的值中没有空格
但我认为目前所有的答案都是这样。你知道吗
假设列名将被排序。例如名称总是出现在列的第一位。下面的代码可以正常工作。你也不需要任何额外的图书馆。你知道吗
相关问题 更多 >
编程相关推荐