파이썬으로 파일 Open 질문 입니다

조회수 685회

CMD로 Ping 입력후 해당값을 txt로 저장한 다음 파이썬으로 open 으로 txt 파일을 열고 txt 파일에 있는 내용중 find를 이용하여 특정 값을 찾고 난 뒤 첫번째와 두번째 값을 비교할려고 하는데 readlines로 읽은뒤 line[1]하면 첫번째 줄이 나오지만 range로 들어가면 line[1]을 하면 첫번째 줄이 아닌 첫번째 줄의 2번째 글자 하나만 나옵니다.

range에 돌리면서 해당 txt 파일의 줄에 해당하는 값을 어떻게 해야 얻습니까?. (line[0]하면 1번째 글자가 아닌 첫번째 줄 이 나오는 방법)

밑에는 코드 입니다

for x in range(len(line)):

            idx = line[x].find("[")
            if idx == 0:
                line[x]=line[x].replace('[{','')
                line[x]=line[x].replace('}]','')
                line[x]=line[x].replace('"','')
                spl = line[x].split(',')
                data1 = 0               
                for y in range(len(spl)):
                    dat = spl[y].find(spl[12]) 
                    times = spl[y].find(spl[2])
                    if times == 0:
                        tim = spl[y].split(':')
                    if dat == 0:
                        dat = spl[y].split(':')
                        data1 = dat[1]
  • 맨글자가 무슨 의미죠? 차라리 작성하신 코드를 올려보세요. 정영훈 2018.9.4 09:40
  • 코드를 보고 당장 떠오르는 생각은... 혹시 이거 내용이 json인가요? 그렇다면 얘기가 달라지는데요... 엽토군 2018.9.4 11:12
  • 파이썬으로 influxdb에 txt파일의 데이터를 파싱해서 집어 넣는 코드입니다 JaeHyeong 2018.9.4 11:23

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    흐음...

    배열의 값들이 한 줄이 나올때는 fileObject.readlines()을 하신것 같고,

    배열의 값들이 하나의 문자만 나올때는 fileObject.readline()을 하신 것 같은데요.

    (메소드 끝에 s가 붙느냐 안 붙느냐의 차이)

    한 번 확인해 보세요.

    • readline을 사용을 안했는데 open외에도 다른곳에 open을 안한곳에 readline을 사용 할 수 있습니까? JaeHyeong 2018.9.4 13:41
    • 음.. 그게 아니라면 문자열이 아니라 문자가 나오는 건 저도 이해가 가지 않네요. 제가 함수 단위로 해본 테스트들은 말씀하신 것과 같은 오동작은 없었는데 말이죠... 일단 line 값이 무엇이고 기대한 값이 아니라면 왜 그렇게 나왔는지 코드를 거슬러 올라가 보는 수 밖에 없을 듯 합니다. doodoji 2018.9.4 13:50
    • 그리고 첨부해 주신 코드로는 문제를 파악하기 힘들어요. 그 전에 파일을 읽는 부분과 그 이후 데이터 정제 과정에서 첨부해주신 부분에 line을 어떻게 넘겨주는지를 봐야 알 것 같아요. doodoji 2018.9.4 13:53
    • f = open(filepath, 'rt') line = f.readlines() line은 이렇게 넘겨주고 있습니다 JaeHyeong 2018.9.4 13:55
    • 주신 코드만 봤을때는 문제 없어보여요 -_-ㅋ 입력 데이타(파일)의 문제일 수도 있습니다. 문자 하나마다 줄바꿈이 있다거나... 파일을 한 번 확인해 보심이 ㅠ doodoji 2018.9.4 14:07
    • 오히려 더 헤깔리게 해 드린게 아닌지 모르겠네요... 꼭 버그 찾으시길 바랄게요!! doodoji 2018.9.4 14:08
  • 우선 라인번호를 얻는 방법은 아래와 같이 enumerate 함수를 사용하면 됩니다.

    파싱부분의 문제는 소스 문자열 제공 및 목적부분의 설명이 있어야 할 것 같습니다.

    with open('file path') as f:
        for i, v in enumerate(f):
            print(i, v)
    

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

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)