2013-10-30 5 views
0

텍스트 파일의 여러 줄에서 처음 10 자만 가져 오려고합니다.텍스트 파일의 조각 선

Mon-000101,100.27242,9.608597,11.082,10.034,0.39,I,0.39,I,31.1,31.1,,double with 1355,,,,,,,, 
Mon-000171,100.2923,9.52286,14.834,14.385,0.45,I,0.45,I,33.7,33.7,,,,,,,,,, 
Mon-000174,100.27621,9.563802,11.605,10.134,0.95,I,1.29,I,30.8,30.8,,,,,,,,,, 
Mon-000191,100.28709,9.495832,9.231,8.105,1,I,1.01,I,0,0,,on spike,,,,,,,, 

가 난 단지 각 라인의 Mon-000101 부분을 원하는 : 이것은 내 라인이 어떻게 생겼는지입니다. 나는 보통 다음과 같은 것을 할 것입니다.

line[0:10] 

그리고 나는 그것을 가지고 있습니다. 하지만 전체 파일에서이 작업을 수행하려고하고 있으며 첫 번째 결과 만 얻습니다.

이것은 내가 일하는 줄 알았는데 작은 코드 :

f = raw_input("Enter the path and filename of the file: ") 
f1 = open(f) 
for line in f1: 
    print line 

하지만 그것은 단지 나에게 (제대로 슬라이스)를 슬라이스 첫 번째 라인을주고있다. 모든 라인에서이 작업을 수행 할 수 있습니까?

새 정보 : 내 텍스트 파일은 첫 번째 ID의 인쇄물 만 가져 오는 이유를 설명하는 긴 줄 하나에 불과합니다. ID (Mon-######) 만 추출하는 방법을 알아내는 데 도움이 필요합니다.

도움 주셔서 감사합니다.

답변

1
In [47]: %paste 
with open('blah') as infile: 
    line = [] 
    for char in itertools.chain.from_iterable(infile): 
    if line.count(',') < 20: 
     line.append(char) 
    else: 
     print ''.join(line[:10]) 
     line = [char] 

## -- End pasted text -- 
Mon-000101 
Mon-000171 

Mon-00017 
Mon-000191 
0

파일의 실제 형식이 무엇인지에 대한 자세한 정보없이이 질문에 대답하기 조금 어려울 것입니다. 실제로는 한 줄일지도 모르겠다. 그렇다고해서 행이라고 생각한 것 사이에 실제 구분 기호가 없다는 뜻입니까 아니면 줄 바꿈 문자가 아닐까요? 당신이 다른 구분 기호를하는 경우

, 당신은 시도 할 수 :

with with open(filename) as f: 
    data = f.read() # read all data into one string 

for line in data.split(whatever_the_real_line_delimiter_is): 
    print line[:10] 

을 다른 한편으로는, 정말 더 구분이없는 경우, 당신은 당신이 찾으려는 항목의 세부 사항에 의존해야합니다 그들을 확인하기 위해. 당신이 잡아하려는 값 중 일부는 실제로 Mon로 시작하지 않는 경우

import re 

with open(filename) as f: 
    data = f.read() # read all data into one string 

for value in re.finditer(r'Mon-\d{6}', data): 
    print value 

, 당신은 그들도 일치하는 패턴을 수정해야합니다,하지만 안 : 정규 표현식 검색이 있다고 할 수있다 당신이 찾고있는 것을 알고 있다면 너무 복잡해질 것입니다.