728x90
반응형
지난 포스트에서는 Python의 기본적인 자료형에 대해 공부해보았다. "Python-기초: 1.0. 자료형(1) - scalar"에서 Data type으로 int, float, None, Boolean은 나왔으나, 정작 문자열은 나오지 않았다.
이번 포스트에서는 data type 중 문자열 Type인 string에 대해 심도 깊게 다뤄보도록 하겠다.
문자열(String)
- Python에서 문자열은 ''(Quotation)나 ""(Double Quotation) 안에 문자를 넣어서 만든다.
- Python의 기본 인코딩은 utf-8이므로, R과 달리 한글에 대한 텍스트 마이닝이 깔끔하게 잘 수행된다.
- 문자열 데이터를 처리하여, 그 안에 숨어 있는 정보를 찾아내는 전반적인 과정을 텍스트 마이닝(Text Mining)이라 한다.
※ 텍스트마이닝(Text Mining)
- 현장에서 접하는 대다수의 데이터는 숫자로 이루어진 연속형 데이터보다 Log Data 같은 문자, 사진 같은 이미지, 동영상, 음악과 같은 비정형 데이터가 대부분이다.
- 대부분의 전처리(Data Handling)는 이러한 비정형 데이터를 분석에 용이한 숫자 데이터로 변환해주는 과정이다.
- 문자형 Data를 연속형 데이터로 변환하는 경우, 크게 2가지 방법이 있다.
- 범주화: 문자에 해당하는 숫자를 배정 - 리소스를 덜 먹음
- 벡터화: One-Hot Vector, Word2Vec 등의 방법 사용 - 일반적으로 기계학습에서 사용
문자열 Data를 만들어보자
# 문자열 Data를 만들어보자.
# 1. "" or ''를 사용해서 만든다.
>>> str1 = "Python is very useful"
>>> print(str1)
Python is very useful
>>> str2 = 'Python is a lot of fun'
>>> print(str2)
Python is a lot of fun
>>> str3 = """Python is easy and fun"""
>>> print(str3)
Python is easy and fun
>>> str4 = '''So let's do Python'''
>>> print(str4)
So let's do Python
- 문자열 Data는 ""나 ''를 사용해서 만들며, "나 ' 기호를 3번 연속 사용해서 만들 수도 있다.
- 보통 """나 '''로 만드는 경우는 긴 문장이나 주석을 넣을 때 사용한다.
# 문자열 안에 문자열 생성 기호인 ''나 ""를 넣고 싶은 경우엔 어떻게 할까?
>>> print("Let's do our best today")
Let's do our best today
>>> print('Pororo said "Hello" to Crong')
Pororo said "Hello" to Crong
>>> Frozen = """
Anna:
"Elsa? Do you want to build a snowman?
"Come on let's go and play.
I never see you anymore. Come out the door.
It's like you've gone away.
We used to be best buddies
And now we're not. I wish you would tell me why.
Do you want to build a snowman?
It doesn't have to be a snowman."
Elsa:
"Go away, Anna."
Anna:
"...Okay bye."
"""
>>> print(Frozen)
Anna:
"Elsa? Do you want to build a snowman?
"Come on let's go and play.
I never see you anymore. Come out the door.
It's like you've gone away.
We used to be best buddies
And now we're not. I wish you would tell me why.
Do you want to build a snowman?
It doesn't have to be a snowman."
Elsa:
"Go away, Anna."
Anna:
"...Okay bye."
- 짧은 문장 안에 '나 "가 들어가야한다면 그에 상응하는 문자로 묶어주면 된다.
- 그러나 이 두 가지가 모두 들어가야한다면, """ 문장 """으로 묶어주면 된다.
- 또는 escape 문자인 \을 사용하면 된다.
이스케이프 문자(Escape Sequence)
파이썬을 포함한 각종 언어에서는 잘 사용하지 않는 특수 문자나 특수문자 + 문자 조합에 특정 기능을 넣어 놓는다. 그러나, 가끔 이 이스케이프 문자가 실제 문자 Data 대상인 경우도 있기 때문에 이스케이프 문자가 아님을 알려주는 방법을 숙지할 필요가 있다.
이스케이프 문자 | 이름 | 설명 |
\b | 벡스페이스 | 뒤로 한 칸 삭제 |
\t | 탭 | 문자열 사이에 탭 간격 생성 |
\n | 라인피드 | 줄 바꿈 |
\f | 폼피드 | 현재 커서를 다음 줄로 이동 |
\r | 캐리지 | 현재 커서를 가장 앞으로 이동 |
\\ | 역슬래시 | \를 이스케이프 문자 앞에 사용하는 경우 그대로 출력 |
- 위 표에서 많이 사용되는 것은 탭, 라인피드, 이스케이프 문자 앞에 \ 사용하기이므로, 나머지 이스케이프 문자에 대해선 크게 신경 쓰지 말자.
- 키보드에서 \는 존재하지 않는데, ₩ 키가 동일한 기능을 한다.
# 이스케이프 문자를 사용해보자
>>> str5 = "뽀로로: \"크롱 반가워!\"\n크롱:\"오! 뽀로로 좋은 아침이야!\""
>>> print(str5)
뽀로로: "크롱 반가워!"
크롱:"오! 뽀로로 좋은 아침이야!"
# 이스케이프 문자를 그대로 출력시켜보자
>>> str5 = "뽀로로: \"크롱 반가워!\"\\n크롱:\"오! 뽀로로 좋은 아침이야!\""
뽀로로: "크롱 반가워!"\n크롱:"오! 뽀로로 좋은 아침이야!"
- 위 예제에서 역 슬래시 사용 후 "나 ' 같은 특정 기능이 들어간 특수 문자를 넣으면 그대로 출력되는 것을 알 수 있다.
- 이스케이프 문자에서 \n나 \t는 Data를 line 단위로 가져오기, tap 단위로 구분 지어 가져오기(구분자)를 하는 경우에 문자 안에 해당 문자가 들어 있어, Row를 잘못 인식할 수도 있다(실제 Row의 수보다 더 많은 Row를 생성).
- 텍스트 데이터를 다룰 때, 이스케이프 문자나 ' or "로 인해 의도치 않은 결과가 출력 될 수 있다.
이번 포스트에서는 가볍게 문자열을 만드는 방법과 이스케이프 문자에 대해 알아보았다. 이스케이프 문자는 반드시 숙지하길 바라며, 최소한 \n이 내려쓰기, \t는 탭이라는 것은 꼭! 외워놓기 바란다.
Data를 가지고 오는 방법 중 txt data를 line별로 가지고 오거나, 탭을 구분자로 가져오는 경우가 많은데, 대상 Data 안에 해당 이스케이프 문자가 들어 있다면(예를 들어 URL Log Data), 데이터를 잘못 불러오는 문제가 발생할 수 있다.
다음 포스트에선 자동으로 문자열의 일부를 바꾸는 방법인 포맷팅(Formating)에 대해 학습해보겠다.
728x90
반응형
'Python > Basic' 카테고리의 다른 글
Python-기초: 2.2. 문자열(3) - 문자열 전처리 (0) | 2021.01.20 |
---|---|
Python-기초: 2.1. 문자열(2) - 문자열 포멧팅 (0) | 2021.01.20 |
Python-기초: 1.5. 자료형(6) - DataFrame (0) | 2021.01.15 |
Python-기초: 1.4. 자료형(5) - dictionary (0) | 2021.01.15 |
Python-기초: 1.3. 자료형(4) - tensor (0) | 2021.01.15 |