(Python) 규칙적인 text 파일에서 원하는 행의 n번째 문자까지 읽고, 추출하여 저장하는 방법

조회수 155회

안녕하세요

저는 프로그래밍을 공부하고 있는 학생입니다.

다름이 아니라 데이터 처리를 하는데 있어, 파일의 특정 행 또는 특정 문자 다음의 m개 행에서 n개의 문자를 추출해서 다른곳에 저장하고 출력하고 싶습니다.


A=[#
asdf 2123
aser 2155
ac2r 2230
#
akmk 30rj
lmmi adl2
alkm kmsd45
#
...]

이와 같이 규칙적으로 쓰인 파일에서 #다음 행부터 다음 #의 전행까지를 연속적으로 추출해서 행으로 저장하고 싶은데, 제 지식이 미천하여 뾰족한 수가 떠오르질 않습니다.

도와주시면 감사하겠습니다.

연구 목적으로 프로그래밍을 배우고 있고, 성적이나 금전적 이득을 취하려는 목적은 아님을 밝힙니다.

3 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    코드를 짜드릴 수는 있지만 그러기엔 질문에 필요한 정보가 부족하니 일단 힌트만 드리겠습니다.
    또한 아무리 뾰족한 수가 떠오르지 않으시더라도 기본적인 틀은 최대한 구현을 해보시고 질문시 포함해주시면 도움을 드리기 쉽습니다.

    파일 열고 읽기

    FILE_PATH = "folder/data.txt"
    f = open(FILE_PATH, 'r') # 읽기 모드로 파일을 염
    lines = f.readlines() # 파일 내용을 줄 단위로 모두 읽어 문자열 배열 형태로 저장
    f.close() # 닫기
    

    문자열에서 특정 문자의 위치나 존재 여부 찾기

    s = "hello#world"
    index = s.indexOf('#') # index는 5
    index = s.indexOf('z') # 없으므로 index는 -1
    

    파일 쓰기(저장)

    f = open(FILE_PATH, 'w') # 쓰기 모드로 파일을 염
    f.write("hello\nworld")
    f.close() # 닫기
    

    FILE_PATH 파일의 내용:

    hello
    world

    리스트에 목록 추가하기

    data = []
    data.append("1234")
    data.append("5678")
    print data # ['1234', '5678']
    
    • 감사합니다. 덕분에 어떻게 해야할지 좀 감을 잡은 것 같습니다. 코드를 거의 완성했으니 다시 여쭤보도록 하겠습니다. Park 2019.2.11 19:52
    • sample.txt A=[# asdf 2123 aser 2155 ac2r 2230 # akmk 30rj lmmi adl2 alkm kmsd45 # akmk 30rj lmmi adl2 alkm kmsd45 # ]
    • filtered_file.txt asdf 2123 aser 2155 ac2r 2230 akmk 30rj lmmi adl2 alkm kmsd45 akmk 30rj lmmi adl2 alkm kmsd45
    with open('sample.txt', 'r') as rf:
        filteredStr = rf.read().split("#\n")[1:-1]    # #\n 으로 나누고 처음, 끝 항목은 제외
    with open('filtered_file.txt', 'w') as wf:
        wf.write(''.join(filteredStr))
    
    • 답글 달아주셔서 감사합니다. 다르게 사용하고 싶은데, 아직 초보여서 그런지 좀 어렵군요. 감사합니다. Park 2019.2.11 19:53
  • 위에 # 을 기준으로 코드를 split()하는 코드와, indexOf 로 #이 있는 위치를 받아오는 2가지 방법이 있네요. 위의 방법대로 하면 원하시는 조건을 잘 처리하실 수 있을것같습니다. 좀 더 복잡한 기준으로 데이터를 가져오고 싶을때는 정규표현식을 사용해서 조건에 맞는 문자열을 가져올 수 있습니다.

    • 감사합니다. 정규표현식을 사용하게 되면 정말 좋을 것 같습니다. 조금 더 공부하도록 하겠습니다. Park 2019.2.11 19:54

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.