자바나라
[Python] re 모듈 - 텍스트처리 본문
* 지난 시간에 facebook api를 통해 jtbcnews 페이지로부터 데이터를 받아왔고, jtbcnews.json 형태의 파일로 저장해 두었다.
* 이번 시간에는 해당 파일을 읽어와 텍스트처리하는 과정을 다루겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import json import re # json 파일명,추출할 데이터의 json key값을 주면 문자열을 리턴한다. def json_to_str(filename,key): jsonfile = open(filename,'r',encoding="utf-8") json_string = jsonfile.read() jsondata = json.loads(json_string) #print(type(json_string)) #print(json_string) #print(type(jsondata)) #print(jsondata) data='' for item in jsondata: value = item.get(key) data += re.sub(r'[^\w]',' ',value) # 한글만 계속 붙여나간다. return data dataString = json_to_str("D:\javaStudy/facebook/jtbcnews.json","message") print(dataString) | cs |
- re 모듈은 정규표현식을 다루는 함수들을 담고 있는 모듈이다. 텍스트 처리를 위해서 필요하다.
- 정규표현식이란 텍스트 처리에 있어서 필요한 패턴과 문법을 의미한다.
- re 모듈에는 여러 함수가 있다. 다른 함수에 대한 정보는 아래 참조 링크에서 공부할 수 있다.
이 포스트에서는 re.sub(pattern, repl, string) 함수에 대해 알아보겠다.
* re.sub(pattern, repl, string) : string에서 pattern과 매치(일치)하는 텍스트를 repl로 치환한다.
re.sub(r'[^\w]',' ',value) : value라는 string 에서 r'[^\w]' 와 일치하는 텍스트를 ' '로 치환한다.
* r'[^\w]' 의 의미
1) r'문자열' : r은 기호를 읽어내기 위한 처리이다. (이스케이프 처리)
# 이스케이프란 ?
: 따옴표나 개행문자 등을 표현하고 싶을 때 \(백슬래쉬)를 앞에 붙여서 표현 가능하다. (ex) \\ , \' ,\n
: \를 붙여서 따옴표 등 기호의 원래 기능으로 부터 벗어나게 해주는 것이 이스케이프 처리다.
: r'문자열' 처럼 앞에 r을 붙여주면 해당 문자열의 모든 기호를 읽어낼 수 있게 된다.('문자열' 전체를 이스케이프 처리)
2) [^\w] 의 의미
: ^는 제외를 의미함 (여집합)
: [^abc] 라고 하면 a 또는 b 또는 c를 포함하지 않는다는뜻
: \w는 모든 문자를 의미
: [^\w]는 모든 문자를 제외한다는뜻 => 모든 기호를 의미함
# 개인적으로 [^\w] 는 어려운 표현이라고 생각한다.
- [\W] 는 문자외의 기호를 의미하는데 이를 통해 표현하면 더 직관적이다.
- 즉, [^\w]=[\W] 이다.
* re.sub(r'[^\w]',' ',value)
: 파일을 읽어온 결과값인 value 라는 string 덩어리에서 기호를 찾아 '(공백)으로 치환하는 처리를 해준다.
*참조 : https://python.bakyeono.net/chapter-11-2.html#1122-%EC%A0%95%EA%B7%9C-%ED%91%9C%ED%98%84%EC%8B%9D
'오늘 배운 파이썬' 카테고리의 다른 글
[Python 기초] String function (0) | 2018.05.18 |
---|---|
[Python 기초] Dictionary (딕셔너리, 키-밸류) (0) | 2018.05.18 |
[Python 기초] Tuple(튜플) (0) | 2018.05.18 |
[Python 기초] Set(셋) (0) | 2018.05.18 |
[Python 기초] List(리스트) (0) | 2018.05.18 |