0
は、私のファイルの内容を考える:文字列のリストから来た文字列をフォーマットする際のPythonエラー?
"ID","Name","Type 1","Type 2","Generation","Legendary"
1,"Bulbasaur","Grass","Poison",1,"FALSE"
6,"Charizard","Fire","Flying",1,"FALSE"
4,"Charmander","Fire","",1,"FALSE"
169,"Crobat","Poison","Flying",2,"FALSE"
146,"Moltres","Fire","Flying",1,"TRUE"
643,"Reshiram","Dragon","Fire",5,"TRUE"
641,"Tornadus, (Incarnate Form)","Flying","",5,"TRUE"
私はreadlines()を使用し、独自の行として各文字列のリストを作成します。
それから私は、これらの文字列を取ると、以下の形式にフォーマットしよう:
'Bulbasaur': (1, 'Grass', 'Poison', 1, False)
私は正確な引用が正確であり、すべての小文字と大文字のが正しいことを確認する必要があります。私はまた、タイプが必要なものに作られていることを保証しなければなりません。私は、文字列(すなわち、ストリップおよびスプリット)を繰り返すか、フォーマットする行くとき
、私はいくつかのエラーを受け付けております:
TypeError: 'int' object is not iterable
AttributeError: 'int' object has no attribute 'split'
私はこれが機能する必要がどのようにと真剣に混乱しています。私の全体的な機能は実行されますが、正しい結果が返されません。例:bulbasaurの代わりにcharmanderの情報を辞書に返します。
- Iはreadlines(からの結果を取る)と、列として各行を取得する必要が私はフォーマット、私はする必要があることたら私は、
- の上方に設けられたフォーマットにその文字列をフォーマットする必要
- それを辞書にする。ここで
あらゆる場所に実際にある私の関数である:ビルトインcsv
モジュールを使用して
def read_info_file(filename): #accept file
file= open(filename)
lines=file.readlines()[1:] #skip first header line
d={}
for line in lines:
split_line=line.split(',') #get individual strings
legendary=True
if 'F' == split_line[-1].strip('"')[0]: #check last position if t or f to format legendary correctly
legendary=False
if len(split_line) > 6:
(k,v)=(split_line[1]+split_line[2].strip('"'), #puts right order and removes excess quotations
(int(split_line[0]),split_line[3].strip('"'),split_line[4].strip('"'),
int(split_line[5]),legendary))
else:
(k,v)=(split_line[1].strip('"'),
(int(split_line[0]),split_line[2].strip('"'),split_line[3].strip('"'),
int(split_line[4]),legendary))
d.update([(k,v)])
file.close()
return d
私はそれをやりたい!残念ながら、インポートされたモジュールは使用できません。 –
@ ocean.1234あなたはパーサを書くつもりですか?最後のデータ項目には引用符で埋め込まれたカンマがあるので、単純な 'line.split( '、')'は機能しません。 –
パーサーは何ですか? –