문제 ENCODING 관련으로 python 3 에서 filter, input, split 을 함께 쓰는 경우 원인을 모를 RTE 가 납니다.

  • furukawa_pan
    furukawa_pan

    ENCODING 문제에서 case 입력을 위한 python3 코드 일부에서 RTE가 납니다.

    RTE가 나는 부분:

    til = int(input())
    n = 1
    while til:
        til -= 1
    
        C, R, A = filter(None, input().split(" ", maxsplit=2))
    

    입력 예시:

    2
    4 4 ACM
    6 4 TRAP

    비록 위 문제 자체에서는 filter 가 필요 없긴 하지만, filter 는 습관적으로 split list 에 빈 문자열 "" 이 들어가 있을 경우를 없애기 위해 filter None 으로 통과시키고 있었는데, 이 부분에서 에러가 납니다. filter 에 통과시키는걸 지우고 넣으면 문제 없이 되긴 하는데, 이유를 모르겠습니다.

    당장은 algospot 의 python 버전인 python 3.4.3 이 없어서 유사 환경을 만들어 테스트 해보는게 안됩니다만, 일단 적어도 python 3.3 ref 및 python 3.4 ref 를 보는 한, 위 코드 자체는 문법적으로는 유효한 코드인 듯 합니다.


    8년 전
1개의 댓글이 있습니다.
  • JongMan
    JongMan


    에, 데이터가 좀.. 번잡스럽네요. 텅 빈 문자열이 주어지는 경우가 있습니다. 이 경우 split() 이 길이 2인 리스트를 반환해서 문제가 됩니다.


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.