2013-09-28 1 views
1

파일을 목록으로 읽는 데 문제가 있습니다. 각 요소를 자체 필드로 읽는 대신 전체 파일에서 하나의 항목 만 만듭니다. 나는에 제거하는 것 같은 \ n을 사용하고 있지만 제대로python 목록 스트립 개행으로 파일 읽기

temp = open('drugs') 
drugs = [temp.read().strip("\n")] 
temp.close 

반환 ['40 Stimpak \ N53 Mentats \ N87 Buffout \ n109 라드-X \의 N125 술의 \의 n260를 동작하지 않습니다 Jet Antidote \ n311 Roentgen Rum \ n424 기념물 덩어리 \ n480 보너스 +1 민첩성 \ n525 Hypo \ n48 Radway \ n71 과일 \ n103 이구아나 어 온 스틱 \ n110 사이코 \ n144 수퍼 스팀 팩 \ n273 힐링 파우더 \ n334 포이즌 \ n469 썩은 용기 \ n481 보너스 +1 지능 \ n49 해독제 \ n81 이구아나 온 스틱 \ n106 누카 콜라 \ n124 맥주 \ n259 제트 \ n310 감마 꿀꺽 삼품 \ n378 쿠키 \ n473 돌연변이 \ n482 보너스 +1 힘 ' ] drugs.strip ('\ n') 추적 (가장 최근 통화 마지막) : 파일 "seek", 줄 18, 인쇄 drugs.strip ('\ n') AttributeError : 'list'객체에 'strip'속성이 없습니다.

답변

9

file.read()은 최대 길이를 지정하지 않는 한 전체 파일 내용을 읽습니다. 당신이 의미해야하는 것은 .readlines()입니다. 하지만 당신은 지능형리스트로 더욱 관용적 갈 수

with open('drugs') as temp_file: 
    drugs = [line.rstrip('\n') for line in temp_file] 

with 문은 파일을 닫는 처리됩니다.

+0

... temp_file이 ... temp_file – gwideman

+0

@gwideman에 줄을 ... 해야하는 경우 라인 : 감사; 결정된. – 9000

+1

새 줄과 공백 만 제거하려는 경우 대부분의 상황에서 '\ n'인수가 필요하지 않습니다. –

0

이것은 스트립을 for 문에 직접 통합합니다.

또는 줄의 텍스트 앞뒤에 공백이 필요하지 않으면이 번호를 사용할 수 있습니다.

import string 

with open('drugs', 'r') as f: 
    for line in map(string.strip, f): 
    print line