Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

자바나라

[Python] re 모듈 - 텍스트처리 본문

오늘 배운 파이썬

[Python] re 모듈 - 텍스트처리

주데브 2018. 5. 24. 14:52

* 지난 시간에 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




* 가장 이해가 어려운 문장

:  data += re.sub(r'[^\w]',' ',value) 


   - 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



Comments