2012-10-26 3 views
0

사전에 있어야하는 외부 파일이 있습니다. 각 기사는 <NEW DOCUMENT>으로 시작하며 파일에서 모든 정보를 가져올 수있는 방법을 모릅니다. <newdoc> 아래 줄에서 시작하여 다른 <newdoc>에 도달하기 전에 끝납니다. 여기까지 내가 지금까지 가지고있는 것이있다.파이썬 외부 파일에서 사전에 추가

for line in file2: 
    line = line.strip() 
    line_list = line.split() 
    if "NEW DOCUMENT" in line: 
     doc_num+=1 
     new_dict[doc_num] = line 
     print(new_dict) 

파일은 다음과 같습니다. ,

docs = file2.read().split("<NEW DOCUMENT>\n") 

을 그것은 당신에게 목록이 아닌 사전을 제공합니다

docs = [] 
document = [] 
for line in file2: 
    line = line.strip() 
    if line == "<NEW DOCUMENT>": 
     # start a new document 
     document = [] 
     docs.append(document) 
    else: 
     # append to the current one 
     document.append(line) 

# convert lists of lines into a string 
docs = ['\n'.join(document) for document in docs] 

답변

2

여기에 솔루션에 대한 수정이다 왜냐하면 왜 순차적 인 숫자의 키를 가진 사전을 원하겠습니까? 당신이 사전이 있어야하지만, 사용 :이 같은

new_dict = dict(enumerate(docs)) 
+0

, 나는 그런 찾는 등, 개별로 그들에게 문서를 얻기 위해 시도하고있다 doc1은 저에게 삶의 밝은면을 보여 주며, 2는 달의 가장 밝은 부분을 보았습니다. 인쇄 할 때 <새 문서>를 무시하고, 1을 호출하고 문서를 읽을 수있는 능력을 말합니다. –

+0

@ 라이언 : 내 문서가'docs [0]'등으로 무엇인지 안다. – Eric

+0

네, 감사합니다! –

0

이 당신을 위해 그것을 할 수 있습니다 :

<NEW DOCUMENT> 
Look on the bright 
side of Life. 
<NEW DOCUMENT> 
look on the very, dark 
side of the Moon 
0

뭔가 :

함께 모든 라인을 결합
In [7]: with open("data1.txt") as f: 
    data=f.read() 
    dic=dict((i,x.strip()) for i,x in enumerate(data.split("<NEW DOCUMENT>")[1:])) 
    print dic 
    ....:  
    ....:  
{0: 'Look on the bright \nside of Life.', 1: 'look on the very, dark\nside of the Moon'} 
+0

그냥 일반 문서 모든 답변에 대한 의견 - 왜 In [7] : 또는'... :'을 볼 필요가 있습니까? – Eric

+0

@ Eric 이것은'IPython' 쉘을 사용하기 때문에 발생합니다. –

+0

그것들이 왜''> ''이 아닌지를 설명합니다. 그러나 그것은 제 질문이 아닙니다. 당신은 점수를 지키고 있습니까? - _ "이봐 요, 내가 해냈어. 그걸로 나에게 7 번이나 걸렸다."_ – Eric