-1

我一直在尝试打印一个 .csv 文件的所有列,该文件有四列,列上没有标题。基本上让python为每一列写一个新行。

到目前为止,这是我的代码,我认为 split(',') 函数会在分隔符处拆分每个节点并在下一行写入下一个数据点。我错了... import os import csv

os.chdir('/users/brettzajac/Documents/CSV_Parser')

try:
    data = open('file.csv', 'r', encoding = 'utf-8')
    for each_line in data:
        try:
            row = each_line.split(',', -1)
            print(row)
        except:
            pass
    data.close()
except:
    print('The file is missing!')

这是我拥有的数据样本。

.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Magnification,3-9X32
.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Magnification,4X32
.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Finish,MATTE
.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Finish,SILVER

我的结果是:

[.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Magnification,3-9X32]
[.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Magnification,4X32]
[.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Finish,MATTE]
[.22 MAG,SIMMONS - .22 MAG RIFLESCOPE,SIMMONS,Finish,SILVER]

无论如何,我都很难过,也许我只是不知道在 google/stackOverFlow 上搜索什么,所以如果我重复了别人的问题,我深表歉意。感谢您提供任何帮助或指向正确方向。

问候,扎亚克

4

3 回答 3

0

代替

print(row)

尝试

for cell in row:
    print cell
于 2013-03-10T23:21:56.903 回答
0

split只是返回一个列表,它与打印、换行符等无关。如果要在新行上打印每个元素的列表,则需要手动打印,例如使用for循环。

于 2013-03-10T23:22:27.557 回答
0

试试这个:

import csv

with open('file.csv', 'rb', encoding = 'utf-8') as f:
    r = csv.reader(f)
    li = list(r)

fields = '...'.join( '{:.<%ds}' % max(map(len,cat))
                     for cat in zip(*li) )

print 'fields :\n%r\n\n' % fields


print '\n'.join(fields.format(*el) for el in li)
于 2013-03-10T23:41:23.280 回答