2014-01-07 3 views
1

나는 전화 번호가 포함 된 단일 열의 csv가 있습니다. 그러나 잘못된 셀 수, 알파벳 및 기호 등이 포함 된 셀이 여러 개 있습니다. 셀에 정확히 10 개의 숫자가 포함 된 모든 행을 유지하고 다른 모든 행을 삭제하기 만하면됩니다.정규식을 포함하지 않는 셀/행을 파이썬과 일치시킵니다.

또한 이름 열의 첫 번째 이름 뒤에있는 모든 셀의 중간에 이상한 비 ASCII 문자가 포함 된 파일이 있습니다. 파일에있는 모든 비 ASCII 문자를 버릴 수있는 간단한 방법이 있습니까? 나는 공간을 그것으로 대체하는 것이 좋을지라도 그것을 제거하고 싶다.

나는 이미 내 csvs에서 실행중인 코드에서 가져온 pandas를 가지고 있으므로 도움이된다면 사용할 수 있습니다.

+0

필터 만 사용하면됩니다 :'new_li = [re.search (regex, e)의 경우 old_old_li에서 e를위한 전자] – dawg

답변

3

먼저, 어떤 임의의 전화 번호를 생성하자 - 가장 좋은 것, 나쁜 :

import random 

li=[] 
for i in range(50): 
    li.append('{}-{}-{}'.format(random.randrange(1,999), random.randrange(1,999), random.randrange(100,9999))) 

그런 다음 그 필터 :

import re 
new_li=[e for e in li if re.match(r'\d\d\d-\d\d\d-\d\d\d\d', e)] 

print new_li 
print set(li)-set(new_li) # show the ones removed... 

당신이 팬더 그것을 할을 하려면, 당신은 동일한 정규 표현식을 사용하여 DataFrame에 을 사용할 수 있습니다 :

+1

Perfect! 나는 사람들이 실제로 대답 뒤에있는 과정을 보여줌으로써 내가 배울 수있는 것을 좋아한다. – Xodarap777

관련 문제