지겹지만 정규표현식에 대한 전처리 질문드립니다.
정규표현식에서 전처리할 때,
선생님이 가르쳐 주신 코드는 약간 이해가 안되서 다른 개발자들 블로그를 검색하다가 아래와 같은 방식을 발견하고 사용해보니 선생님과 동일한 결과 값이 나오네요..
gym = re.sub('[0-9-=+#/\?:^$.@nan]','',gym)
위와 같은 코드와 선생님이 쓰신 코드의 차이점은 무엇인가요???
gym = re.sub("[\[\d\-nan\]]","",gym)
답변 1
1
안녕하세요.
수업에서 사용한 정규표현식은 다음의 문자들을 전처리 하기 위해 사용되었습니다.
[,4,,,,7,,,nan,,,8,,,,5,,,,6,,,,3,,,,10,,,,14,,,,9,,,,30,,,,2,,,,13,,,,12,,,,40,,,,17,,,,-,,,,농구장,,,,궁도장,,,,풋살구장,,,,풋살구장,,농구장,,인라인스케이트장,,,,축구장,,,,족구장,,,,게이트볼장,,,,운동기구14개,,농구장2개소,,족구장1개소,,,,운동기구6개,,족구장1개소,,,,운동기구10개,,,,운동기구4개,,,,운동기구7개,,,,에어로빅장,,농구장,,,,테니스장,,씨름장,,농구장,,,,바디싣업1,스트레칭롤러1,전신돌리기1,허리안마기1,허리비틀기1,,,,TM스탭사이클1,TM체어웨이트1,TM트윈바디싣업1,TM트윈트위스트1,TM크로스컨트리1,TM풀웨이트1,,,,철봉1,,,,하늘걷기1,마라톤운동1,허리돌리기1,3단철봉,윗몸일으키기1,,,,철봉1,팔굽혀펴기1,몸통돌리기1,허리좌우로흔들기1,,,,스트레칭롤러1,풀웨이트1,바웨이트1,,,,하늘걷기1,온몸허리돌리기1,스트레칭기1,거꾸로매달리기1,,,,하늘걷기1,온몸허리돌리기1,등허리지압기1,철봉3,,,,스탭싸이클1,풀웨이트1,트리플트위스트2,트윈바디싣업1,크로스컨트리1,스트레칭롤러1,트윈워밍암1,,,,하늘걷기2,스탭싸이클1,체어폴1,철봉1,트리플트위스트2,트윈바디싣업1,,,,윗몸일으키기1,온몸허리돌리기1,팔굽혀펴기1,다리뻗치기1,온몸허리돌리기1,거꾸로매달리기1,,,,하늘걷기1,온몸허리돌리기1,옆파도타기1,,,,크로스워킹,스카이워킹1,파워프레스,풀웨이트1,싸이클론,트위스트1,스탠드업,마사지롤1,사이드스윙,터닝암1,푸시웨이트,레그프레스1,,,,평행봉1,,,,트윈바디싣업1,트윈트위스트1,스탭싸이클1,크로스컨트리1,체어풀1,,,,크로스컨트리1,자전거팔뻗기2,등안마기1,트윈워밍암1,체어웨이트1,오버턴스트레칭1,,,,크로스컨트리1,롤링웨이스트1,레그프레스1,트윈트위스트1,체어웨이트1,,,,족구장1,역기1,,,,등지압기1,마라톤운동,공중걷기운동1,허리돌리기,온몸돌리기1,,온몸역기올리기,온몸근육풀기1,,,,트리플트위스트1,트윈바디싣업1,크로스컨트
철봉1, 철봉2 이런식으로 철봉에 숫자가 붙어 있다면 빈도수를 세려고 할 때 콤마(,)로 구분해서 단어의 빈도수를 카운트 한다면 뒤에 숫자 때문에 철봉1과 철봉2가 다른 빈도수로 세어지기 때문에 이를 전처리 하는 과정에서 정규표현식을 사용했습니다.
[] 안에는 패턴을 사용합니다. 숫자는 0-9 로 쓸 수도 있지만 \d 로 사용할 수도 있습니다.
또 적어주신 내용은 숫자외에도 다른 특수문자를 찾도록 구현이 되어있습니다.
아래 표를 보시면 제가 사용했던 것처럼 숫자를 \d 로 쓸 수도 있지만 [0-9] 로 쓸 수도 있습니다.
알파벳 문자를 \a 로 쓸 수도 있지만 [A-Za-z] 로 사용할 수도 있습니다.
아래의 표는 위키에서 가져왔는데 아래 링크의 문서를 좀 더 참고해 보세요.
https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
| POSIX | 비표준 | 펄/Tcl | Vim | ASCII | 설명 |
|---|---|---|---|---|---|
[:alnum:] |
[A-Za-z0-9] |
영숫자 | |||
[:word:] |
\w |
\w |
[A-Za-z0-9_] |
영숫자 + "_" | |
\W |
\W |
[^A-Za-z0-9_] |
낱말이 아닌 문자 | ||
[:alpha:] |
\a |
[A-Za-z] |
알파벳 문자 | ||
[:blank:] |
\s |
[ \t] |
공백과 탭 | ||
\b |
\< \> |
(?<=\W)(?=\w)|(?<=\w)(?=\W) |
낱말 경계 | ||
[:cntrl:] |
[\x00-\x1F\x7F] |
제어 문자 | |||
[:digit:] |
\d |
\d |
[0-9] |
숫자 | |
\D |
\D |
[^0-9] |
숫자가 아닌 문자 | ||
[:graph:] |
[\x21-\x7E] |
보이는 문자 | |||
[:lower:] |
\l |
[a-z] |
소문자 | ||
[:print:] |
\p |
[\x20-\x7E] |
보이는 문자 및 공백 문자 | ||
[:punct:] |
[][!"#$%&'()*+,./:;<=>?@\^_`{|}~-] |
구두점 | |||
[:space:] |
\s |
\_s (단순히 줄 끝에 추가) |
[ \t\r\n\v\f] |
공백 문자 | |
\S |
[^ \t\r\n\v\f] |
공백이 아닌 모든 문자 | |||
[:upper:] |
\u |
[A-Z] |
대문자 | ||
[:xdigit:] |
\x |
[A-Fa-f0-9] |
16진수 |
감사합니다.
패키지 설치 에러 ydata-profiling
0
134
2
자세한 설명 부탁드려요 ㅜ
0
200
2
seaborn 라이브러리 호출하였으나 그래프가 안 그려져요
0
310
2
value_counts와 count 차이
0
375
2
안녕하세요 데이터 최신과 관련해서 문의드립니다.
0
217
3
scatterplot질문
0
132
1
강의 화면이 안나옵니다
0
174
2
4분12초 2013년부터 데이터가 없으면 어떻게하나요?..
0
193
2
에러 메시지
1
311
2
그래프 색이 동일하게 나옵니다.
0
328
2
시각화 라이브러리 비교
0
400
2
주피터 노트북 설치
0
399
1
2. 상가 기술통계 아웃풋 자료에서 오류가 납니다
0
233
1
14. distplot g = sns.FacetGrid(df_last, row="지역명", height=1.7, aspect=4) g.map(sns.distplot, "평당분양가격", hist=False, rug=True); 오류
0
184
1
group by agg function failed 에러
0
696
2
빈도수가 1000개 이상인 데이터를 따로 담을 때 코드 질문 있습니다.
0
295
2
주피터 노트북 실행 했는데 앞에 *가 생기고 결과가 나오지 않아요
0
372
3
get_string함수에서 문자 'nan'
0
205
1
seaborn X축 시작 지점 조정 질의의 건
0
229
1
14강 distplot 질의
0
299
1
nbextension 설치 및 셋팅 후 적용이 안되는 이슈
0
486
1
corr = df.corr() 입력시 오류
1
383
1
keyword grid_b is not recognized
0
342
1
%ls data 매직커맨드 사용시 한글 깨짐
0
304
1





