2013-07-25 2 views
0

나는 각기 다른 성격의 파일과 4-5 문장의 각 음질에 관한 진술서를 작성하고 있습니다. qaulities는 빈 줄로 구분됩니다. 저는 자질이라고 불리는 목록에 그들을 저장하고 싶습니다. 여기서 질은 [0]은 첫 번째 품질에 대한 문장을 포함하고, 품질은 [1] 두 번째와 관련된 문장을 포함합니다.파일에서 목록 만들기

내 코드

:

class Horoscope: 

    def __init__(self, filename): 
     self.qualities = list() 
     file = open(filename, 'rU') 
     i = 0 
     for line in file: 
      row= line.strip().split('/') 
      if len(row) >= 2: 
       self.qualities[0+i] = row 
      else: 
       i += 1 
     file.close() FILENAME= 'horoscope.txt' 

horoscope= Horoscope(FILENAME) 

print(horoscope.qualities) 

하지만 회로의 모든 인쇄입니다 "[]"... 사람이 왜 알고 있나요? 감사!

+1

존재하지도 않는 색인에 액세스하려고하거나 내 'if'조건 일 수있는 색인에 액세스하려고하므로 프로그램에서 오류가 발생한다고 생각합니다. 사실 '. –

+0

'if'조건을 수정할 수 있도록 텍스트 파일을 게시하십시오. –

답변

1

놀랍습니다. self.qualities[i]은 IndexError를 발생시키지 않았습니다. 즉 len(row)은 결코 >= 2이 아닙니다. 말하자면 경우, 대신 append를 사용한다 :이 원래 코드의 논리를 복제하지 않습니다

class Horoscope: 
    def __init__(self, filename): 
     self.qualities = list() 
     with open(filename, 'rU') as f: 
      for line in f: 
       row = line.strip().split('/') 
       if len(row) >= 2: 
        self.qualities.append(row) 

FILENAME= 'horoscope.txt' 
horoscope= Horoscope(FILENAME) 
print(horoscope.qualities) 

하는 것으로. len(row) >= 2에 대한 모든 행을 추가합니다. 원래 코드는 더 복잡한 작업을 수행하며 때로는 같은 인덱스에서 덮어 쓰며 때로는 인덱스를 앞당기는 경우도 있습니다. 너 정말 그걸 원해? 그렇다면 인덱스가 단순히 개선 된 위치의 목록에 무엇을 배치 하시겠습니까? None? 어떤 값은 모든 색인에 있어야합니다 ... (두 번째와 다섯 번째 색인에만 값이있는 목록을 가질 수 없습니다. 길이가 5 인 목록에는 5 개의 값이 있어야합니다.)

+0

내 의도는 모든 행을 텍스트 파일에서 첫 번째 인덱스로 저장 한 다음 명령문이 대신 인덱스를 앞당기 고 다시 한 번 모든 행> = 2를 저장할 때 저장합니다. – user2618146

0

It 거의 코드가 다음과 같이 단순화 될 수 있습니다 :

class Horoscope: 
    def __init__(self, filename): 
     with open(filename) as fin: 
      self.qualities = [line.strip() for line in fin if '/' in line]