私はpythonに非常に新しいので、私が行くにつれて自分自身を学ぼうとしています(python )。インポートしたモジュールはTkinterとcsvです。質問があれば教えてください。
簡潔にするために、ここにコード全体を掲載するつもりはありませんが、エラー全体を含め、エラーが適用されている行を示します。以下にあるものはすべて、MainAppというクラスにあります。
def SubmitEdit(self):
self.key=""
self.val=""
new_rows = []
self.changes = {self.key:self.val}
with open("info.csv",'rb') as f:
reader = csv.reader(f):
for row in reader:
new_row = row
for field in row:
if field == "NAME":
print "groovy"
for (self.key,self.val) in self.changes.items():
new_row = [ x.replace(self.key,self.val) for x in new_row]
new_rows.append(new_row)
with open("info.csv","wb") as f:
writer = csv.writer(f):
writer.writerows(new_rows)
私はこのコードを別々に書き、プログラムに入れる前に機能することを確認し、完全に機能しましたが、クラスに入れて変更を加えたとき(私は考えました)、コード/変数の行にそれを行う必要がありましたうまくいきませんでした。だから、私はただ間違って何かを修正していると信じるようになります。
エラーは次のとおりです。
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py",line 1536, in__call__
return self.func(*args)
File "C:\Python27\draft.py", line 328, in SubmitEdit
for (self.key,self,val) in self.changes:
AttributeError: 'set' object has no attribute 'items'
328行目は次の行を指します。「または(self.key、self.val)in self.changes.items():」
私は「自己」の有無を変えました(気がします)。すべての変数についてですが、私はそれを動作させることができません。
編集:コードを次のように変更しました:
def SubmitEdit(self):
new_rows = []
self.changes = {"MTMA",123}
with open("info.csv",'rb') as f:
reader = csv.reader(f):
for row in reader:
new_row = row
for field in row:
if field == "NAME":
print "groovy"
for (key,val) in self.changes.items():
new_row = [ x.replace(key,val) for x in new_row]
new_rows.append(new_row)
with open("info.csv","wb") as f:
writer = csv.writer(f):
writer.writerows(new_rows)
コメント通りですが、それでもまったく同じエラーが発生します。
最新の更新コードからわかるように-
self.changes = {"MTMA",123}
上記のようにself.changesを定義すると、実際には辞書ではなくセットを定義します。コロンの代わりに '、'(コンマ)を使用したため、実際のコードでは、コロンではなくコンマ自体を使用していると確信しています。
キーとして「MTMA」、値として123を使用して辞書を定義するには、それらの間にコロンを使用します。例-
self.changes = {"MTMA":123}
実際のコードでも同様に行います。
空の辞書が必要な場合は、次のように定義します-
self.changes = {}