假设你有:
$ cat file.csv
FIRST NAME: xxx
MIDDLE NAME: xxx
LAST NAME: xxx
BIRTHDAY: xxx
HEIGHT: xxx
WEIGHT: xxx
ADDRESS: xxx
CITY, STATE ZIP: xxx
你可以做:
with open('file.csv') as f:
data=[[e.strip() for e in line.split(':')] for line in f]
print zip(*data)
打印:
[('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP'), ('xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx')]
zip 转置矩阵,使 Headers 位于顶部 .
那么你可以这样做:
>>> zip(*data)[0]
('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP')
然后得到你想要的东西:
>>> ','.join([e.replace(' ','').replace(',','').lower() for e in zip(*data)[0]])
firstname,middlename,lastname,birthday,height,weight,address,citystatezip
如果你想要第一列(冒号后的项目),你可以使用相同的方法:
>>> ','.join([e.replace(' ','').replace(',','').lower() for e in zip(*data)[1]])
xxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx
或者更简单:
>>> ','.join(zip(*data)[1])