-1

4つの列があり、列にヘッダーがない.csvファイルのすべての列を印刷しようとしています。基本的に、Pythonにすべての列に新しい行を書き込ませます。

これまでの私のコードは次のとおりです。split('、')関数は、区切り文字で各ノードを分割し、次の行に次のデータポイントを書き込むと思いました。私は間違っていました...importos 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で何を検索すればよいかわからないので、他の人の質問を複製した場合はお詫びします。正しい方向への助けやポイントに感謝します。

よろしく、Zajac

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 に答える