0

私はPythonの初心者です。私のデータテーブル(Table1)には、21列と数千行があります。とても大きいので、ラップトップで開くことができません。これは次のようになります。

ABCDEFG、HIJKLMNO、PQRSTUVW、TEYHDSJD.......。

TRGFHFJ、GDGSANTO、JDKNVWWR、URNWHJX.......。

.....。

ただし、列10〜21のみで構成されるこのテーブルのサブセットを再現する必要があります。私は以下を試しました:

import sys
import csv

with open(sys.argv[1], "r") as input:
   readinput = csv.reader(input, delimiter=',')
   with open("output.csv", 'wt') as output:
      writer=csv.writer(output, delimiter="\t")
      for row in input:
         values =  [row[10],row[11],row[12],row[13],row[14],row[15],row[16],row[17],row[18],row[19],row[20],row[21]]
         writer.writerow([values])
         print (row[10])

しかし、cvs.readerの式「row [10]」はこれを行の10番目の要素(= 10番目の列)として解釈していないことがわかりました。代わりに、それは私に10番目の文字を与えます。したがって、出力はTable1の10番目から21番目の列ではありませんが、10番目から21番目の文字であり、次のようになります。

K、L、M、N、O、 ""、P、Q、R、S、T、U

S、A、N、T、O、 ""、J、D、K、N、V、W

私は何が間違っているのですか?助けてくれてありがとう!

4

2 に答える 2

1

あなたが使用しているfor row in input、私はあなたが欲しかったと思いますfor row in readinput

于 2012-05-09T21:28:14.857 に答える
0

.csvファイルがあり、後者のファイルが前者のファイルの列10から21のみで構成されるように、別の.csvを作成する場合は、次のように実行できます。

with open('old_file.csv') as old_f, open('new_file.csv', 'w') as new_f:
    for line in old_f:
        new_f.write(','.join(line.split(',')[10:]))
于 2012-05-09T22:14:25.753 に答える