2017-02-08 23 views
-1

私は化学物質のファイルを持っています。このファイルには、セクションの名前に対応するデータが付いています。私は 'NAME'の項目( 'NAME'の部分を除く)を読んで、複数の名前がある場合はそれを複数のリストに読み込み、 'FORMULA'セクションに到達するたびにブレークして次の項目に移動しようとしています'NAME'セクションですが、どのようにわかりません。私は初心者のプログラマーです。ここでは例です:Compound List Screenshot enter image description hereファイルから複数の行のデータをPythonに読み込むにはどうすればよいですか?

ここに私のコードは、これまでのところです:

li=[] #list of all names 
for line in inputFile: 
    if line[:5]=='ENTRY': 
     items = line.split() 
     cmNm = items[1] #compound Number 
    else line[:4]=='NAME': 
     items = line.split() 
     cmName = items[] 
     if line[:7]=='FORMULA': 
      break 
+0

1点: 'else line [:4] == ...' do 'elif line [:4] == ...' – jcfollower

+0

この投稿の回答は役に立ちます... http:// stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list – jcfollower

答えて

0
with open('/path/to/file.txt', 'r') as inputFile: 
    for line in inputFile: 
     try: 
      # Skip lines until we find an entry 
      while len(line) < 5 or line[:5] != 'ENTRY': 
       line = inputFile.next() 
      # Setup for logging that entry 
      cmNm = line.split() 
      cmName = [] 
      # Append all name lines 
      while len(line) < 7 or line[:7] != 'FORMULA': 
       cmName.append(line) 
       line = inputFile.next() 
      # Process cmNm/cmName for current compound before moving on 
      print (str(cmNm) + " " + str(cmName)) 
     except StopIteration: 
      pass # Reached end of file 

cmNmは、ENTRYラインの分割リストが含まれてい

cmNameが一緒に作り上げる行のリストが含まれています名前。

保存する処理を追加する必要があります.cmNm & cmNameを希望どおりに保存/フォーマットします。私はちょうどそれが行くようにそれらを印刷させた。

最後の有効なエントリがFORMULAである限り、StopIterationで安全にpassを使用できます。

関連する問題