2017-09-07 8 views
1

を出力する前に、この構造は、データベース内のすべてのプリンタに対して繰り返さテキストファイルを解析し、リストオブジェクトにテキストを収集し、私は次のような構造を持つテキストファイルで働いている各リスト

printer_name: 
description = printer_description 
library = printer_library 
form = printer_form 

私が働いているPythonスクリプトの所望の出力は次のようになります。この時点で

'printer_name', 'printer_description', 'printer_library', 'printer_form' 
'printer_name', 'printer_description', 'printer_library', 'printer_form' 

...and so on for every printer record in the text file... 

、私はに各アイテムを収集しようとしたときに、所望の出力を構築の問題に実行し続けます各レコードのリストオブジェクト。

f = input('Enter file name:') 
fh = open(f) 

lst = list() 
for line in fh: 
    line = line.strip() 
    if len(line) == 0: continue 

    elif line.startswith('description'): 
     descList = line.split() 
     description = ' '.join(descList[2:]) 
     lst.append(description) 

    elif line.startswith('library'): 
     libList = line.split() 
     libraryItem = libList[2:] 
     library = libraryItem[0] 
     lst = lst.append(library) 

    elif line.startswith('form'): 
     formList = line.split() 
     formItem = (formList[2:]) 
     form = formItem[0] 
     lst = lst.append(form) 

    else: 
     printer = line[:-1] 
     lst = lst.insert(0, printer) 

print(lst) 

このスクリプトは、「NoneType」オブジェクトが属性「追加」を持っていないことを示すPythonの属性のエラーを返します:

は、ここで私が働いてきた最新バージョンです。これは私の最初のelifブロックのlst.append(description)ステートメントを参照しているようですが、残りのelifブロックをコメントアウトしてスクリプトをそのように実行すると、記述アイテムの単一リストを生成できます。

希望の出力を得るためにリストのリストを取得するには、print(lst)ステートメントを配置して、それがすべての印刷レコードに対して呼び出されるようにする必要があります。それ自体の行に組み込まれているが、私はその面でも問題を抱えてきた。

誰かが私のためにこのパズルで刺すことを喜んで受け入れることができますか?

本当にありがとう!

答えて

1

方法appendリターンNoneので、あなたはlst = lst.append(library)セットをしようとすると、変数へNone すべて置き換える:あなたが試すことができますが、list linesのが必要な場合は

lst = lst.append(library) 
lst = lst.insert(0, printer) 

lst.append(library) 
lst.insert(0, printer) 

へロジック:

lines = list() 
for line in fh: 
    lst = list() 
    # You code 
    lines.append(lst) 
+0

これは素晴らしいことです。私が今すぐ近くにあることを指摘してくれてありがとう。それでも、出力は1つの大きなリストとして戻ってきています。私はこの時点で、このリストを4つのアイテム[:: 4]ごとにスキップしてループし、各インスタンスを別のリストとして返し、既存の大きなリストからリストのコレクションを作成すると思います。これについてさらに詳しく作業していきます... –

+0

あなたを助けてうれしいです。答えを受け入れることを忘れずに、更新情報をお読みください。 –

+0

おかげさまで、私は今、すべてのアイテムを個別のリストに入れているようです。 DB内の各レコードを区切り文字列の1行として出力することが望ましい出力目標に向かっています。 –

関連する問題