2016-04-22 15 views
0

CSVファイルから指定された行と列を削除するスクリプトの設計に問題があります。ここに私のスクリプトは、これまでのところです:CSVクリーンアップスクリプトのタイプエラー

import csv 
with open ("E:\\CSULB Grad\\2016 Spring\\Geog 588\\Project\\ACS_14_5YR_B02001_Copy.csv","rb") as csvfile: 
    reader=csv.reader(csvfile) 
with open ("E:\\CSULB Grad\\2016 Spring\\Geog 588\\Project\\ACS_14_5YR_B02001_Copy.csv","ab+") as csvfile2: 
    writer=csv.writer(csvfile2) 
    for row in csvfile2: 
     del row['HD02_VD01'] 
     writer.writerow(row) 

は、ここで私がなってきたトレースバックエラーです:あなたはそれを反復処理としてあなたがその場でCSVファイルを変更することはできません

Traceback (most recent call last): 
    File "C:\Python27\ArcGIS10.3\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 326, in RunScript 
    exec codeObject in __main__.__dict__ 
File "E:\CSULB Grad\2016 Spring\Geog 588\Project\Script2.py", line 7, in <module> 
    del row['HD02_VD01'] 
TypeError: 'str' object does not support item deletion 

答えて

1

。元のファイルの各行に必要な列のみを書き込む新しいCSVファイルを作成することを検討してください。例えば

:({:D1、 "Col2に":D2 "のCol1"})

with open(path,"wb") as csvfile: 
     writer = csv.DictWriter(csvfile, fieldnames = fieldNames) 
     for row in csvfile2: 
      writer.writerow({"Col1":row['...'],"Col2":row['...']}) 
+0

あなたがにd1だけでは何を意味するかを教えてもらえますか?私のコースは、辞書を操作する方法を私たちに教えてくれませんでした。それはここでやっているように見えます。 csvfile内とおり 私が試したコードは、オープン( "A" "\\ CSULBグラ\\ 2016春\\ Geog 588 \\プロジェクト\\ ACS_14_5YR_B02001_Copy.csv E")と インポートCSV なってしまいます。writer = csv.DictWriter(csvfile、fieldnames = fieldnames) writer.writerow({'GEO.id': 'GEOID'、 'GEO.id2': 'GEOID_2'、 'GEO.display-label': 'CEN_TRACT' 、 'HD01_VD01': 'POP_TOT'}) – daven520

+0

と私はこのトレースバックを取得します トレースバック(最新のコール最後): ファイル "C:\ Python27 \ ArcGIS10.3 \ Lib \ site-packages \ pythonwin \ pywin \ framework \ scriptutils.py "、行326、RunScriptで exec codeObject in __main __.__ dict__ ファイル" E:\ CSULB Grad \ 2016 Spring "GEOID"、 "GEO.id2": 'GEO.display-label':\ Geog 588 \ Project \ Script4.py "、行4、 writer.writerow({ 'CEN_TRACT'、 'HD01_VD01': 'POP_TOT'}) ValueError:dictにフィールド名に含まれないフィールドが含まれています: 'GEO.id2'、 'GEO.id'、 'HD01_VD01'、 'GEO.display-label' – daven520

+0

編集された答え。 d1/d2は、設定するデータの任意の変数名でした。 – Phillip

関連する問題