[파이썬 Example #004] text파일의 특정 단어를 찾아서 새로운 파일에 쓰기

2019. 9. 19. 17:08컴퓨터_Com/파이썬 지식_Things to remember

출처: https://www.computerhope.com/issues/ch001721.htm

 

How do I Extract Specific Portions of a Text File Using Python?

Tutorial and examples with step-by-step instructions for extracting text from a file using Python.

www.computerhope.com

아래의 함수를 보면 입력으로 파일(file)을 받는다.

받은 파일을 열어서 리스트 형태로 만든다. 이 때 'rt'는 read와 text의 약자이다. 

file을 outputFile로 open해서 outputFile의 한 줄 한 줄을 for loop로 line에 집어 넣는다. 이 때 그냥 line을 append 하면 끝에 줄바꾸기 '\n'이 남으므로, String을 삭제하는 기능을 하는 rstrip을 이용하여 '\n'을 없앤다. 

그리고 나서 "Cycle Exp."와 "PIN.EDT PPIN"가 포함된 줄을 찾아서 pinMap 리스트에 집어넣고, 

'summary_fxy.dat'라는 파일에 한 줄씩 써서 파일로 만든다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def gen_fxy(file):
    '''Save Peaking Factor to 'summary_fxy.dat' '''
    listOutputFile = []
    with open(file'rt') as outputFile:
        for line in outputFile:
            listOutputFile.append(line.rstrip('\n'))
 
    pinMap = []
    linenum = 0
    substr01 = "Cycle Exp.".lower()
    substr02 = "PIN.EDT PPIN".lower()
 
    with open(file'rt') as outputFile:
        for line in outputFile:
            linenum += 1
 
            if line.lower().find(substr01) != -1:
                pinMap.append("Cycle Exp. " + str(linenum) + ": " + line.rstrip('\n'))
 
            if line.lower().find(substr02) != -1:
                pinMap.append("Line " + str(linenum) + ": " + line.rstrip('\n'))
                for value in listOutputFile[linenum+2 : linenum+11]:
                    pinMap.append(value)
 
    with open('summary_fxy.dat''w') as f:
        for line in pinMap:
            f.writelines("%s\n" % line)
 
    return
cs