2014-08-26 2 views
-1

불완전 항목을 필터링 도움이 필요 :내가 같이 데이터 포인트의 설정을 .csv에 [파이썬]

ID를 70014 1940 1 1 26.8 1 Y

ID 70014 1940 1 2 29.8 1 Y

ID 70,014 1,940 34.3 1 3 1 Y

ID 70,014 1,940 35.7 1 1 4 Y

ID 70,014 1,940 34.1 5 1 1 Y

,691 363,210

하지만 일부 항목은 누락 값을 아래의 것과 같은

ID 70,014 1,940 6 30
ID 1 N

70,014 1,940 7 114 I를 설정하기 위해 방어 기능을 사용해야 합법적 인 항목에 대한 매개 변수를 설정 한 다음 필터링 할 수는 있지만 그 방법을 정확히 알지 못합니다. 내 코드에서 어디에 있어야하는지에 대해 혼란스러워하고 있습니다. 매개 변수를 설명하는 방법을 알고 있지만 프로그램의 나머지 부분에이 코드를 연결하는 방법은 알지 못합니다. 난 아무것도 탈락 한 경우

, 나는이 문제에 대한 설명 드리겠습니다 알려 더 철저하게

건배 :).

+0

@greole을 시도해 볼 수도 있습니다 더 컴팩트 한 표기법 같은 일 때 항목 False로 올한다, 예를 들면 : 하는 dec accept_entry (항목) (3 열 == "")는 (Y "거짓 경우 COLUMN7를 =!) 반환 "경우 반환 FALS을 e True를 반환하십시오. 하지만 여기에 달라 붙어서 False 항목을 건너 뛰는 방법을 모르겠습니다. – HardBeat101

+1

코드를 게시하고 지금까지 얻은 오류 만 게시하면 도움이 될 것입니다. – greole

+0

당신은 'ID 70014 1940 7 1 14 1 N'과 같은 줄은 값이 누락되었다고 말했습니다. 그러나 그렇지 않습니다. 그것은 올바른 양의 가치를 지니고 있습니다 (8). 내가 틀린 것을 놓치고 있니? – jrd1

답변

0

당신이 문자열을 분할하면된다 충분한 필드가있는 경우 셀 수 간단한 일이 : 개별 요소는 (당신은 그것을 위해 regexps '에 사용할 수) 유효한지

def is_valid_ID(Id): 
    if len(Id.split()) == 8: 
     return True 
    else: 
     return False 

>>>is_Valid_Id("ID 70014 1940 1 1 26.8 1 Y") 
True 
>>>is_Valid_Id("ID 70014 1940 1 1 26.8 1") 
False 

그러나,이 늘 확인하십시오.

아니면 regexps '에 사용하려는 경우 함수를 선언 할 경우

def is_valid_ID(Id): 
    return (True if len(Id.split()) == 8 else False) 

당신은 내가 기본적으로 사용하려고 해요

import re 

def accept_entry(entry): 
    try: 
     return re.search("ID [0-9]{5} [0-9]{4} [0-9] [0-9] [0-9.]* [0-9] Y",entry).group() 
    except: 
     return False 
+0

대단히 고마워요 'for entry'loop'안에 오는 것이 좋습니까? 하단에 def가있는 상태로 코드를 실행했습니다. Python은 변수가 '정의되지 않았습니다.'라고 알려주고 있습니다. – HardBeat101

+0

'if __name__ == "__main __"'라인 바로 앞에서 – greole

+0

굉장하다. 내가 제대로 작동하도록 도왔다. 내가 생각하는 몇 가지 관련 문법에 문제가 있었는데, 귀하의 게시물은 내가 뭘 잘못하고 있었는지, 내 머리 속을 클릭하게 만들었습니다. – HardBeat101

관련 문제