스토리지

[07.13] 파이썬 1일차 - 문자열 처리 본문

Python

[07.13] 파이썬 1일차 - 문자열 처리

ljw4104 2021. 7. 13. 01:21

C++에서 파이썬으로 갈아타는 이유 중에 하나가 문자열 처리가 너무 간단하게 이루어지기 때문이다.

C++에서 Split을 하려고 하면 똥꼬쇼를 해야되지만 다른 언어들은 그렇지않다.

여기서는 문자열을 위주로 정리해보려고 합니다.


문자열 반복

greet = 'hello'

print(greet * 5)

안에서 반복문이 자동으로 이루어지나보다. 너무 편하다.

 

 

문자열 길이

greet = 'hello'

print(len(greet))

len함수를 사용하여 길이를 구한다.

len함수의 인자에 문자열만 들어가는지 아니면 다른것도 들어가는지 알아봐야겠다.

 

 

 

문자열 연결

eng = 80
result = '영어점수 : ' + eng + "점"
# 모든 변수의 자료형이 문자열이 아니면 에러를 일으킴.
print(result)

에러를 발생시킨다.

+ 연산자로 문자열들을 연결할 수 있지만 도중에 다른 자료형이 들어가면 에러를 발생시킨다.

C#의 toString과 같은 함수는 str()이란 함수이다.

eng = 80
result = '영어점수 : ' + str(eng) + "점"
# eng변수가 문자열 형태로 삽입되었다.
print(result)

결과물

 

문자열 포맷팅

C#에서는 {0}, {1}로 하던 바인딩을 % 연산자를 통해서 수행하게된다. 오히려 C와 비슷하다.

name = '파이썬'
print('저는 %s를 공부하고 있습니다.' % name)

* 문자열이 끝나고 변수를 바인딩할 때 쉼표 , 를 습관적으로 넣어줬더니 에디터 상에서 빨간줄이 생겼다.

, 를 넣으면 안된다. 띄어쓰기는 안해도 되는 것 같다.

 

%s는 문자열이니깐 string의 s가 들어가고 %d는 digit을 뜻하는 정수형을 가리킨다.

 

다른 문자열포맷팅

year = 2021
month = 7
date = 13

a = '%d-%02d-%02d' % (year, month, date)
print(a)

결과

%02d => 해당 정수가 2자리보다 작을 때 앞에 0을 채워넣는다.

이것을 활용해서 %.2f는 소숫점 둘째자리까지 출력한다는 의미이다.

height = 168.6
txt = '제 키는 %.2fcm입니다.' % height
print(txt)

 

여느 다른 언어처럼 format이라는 함수를 사용해서 바인딩을 하는 방법도 존재한다.

name = '이종우'
age = 25
eyesight = 0.1

a = '이름 : {}'.format(name)
b = '나이 : {}'.format(age)
c = '시력 : {}'.format(eyesight)

print(a)
print(b)
print(c)

 

이외에 문자열 메소드가 여러가지 존재한다.

메소드 설명
str.format() 문자열 포맷팅
str.count() 문자열 갯수 세기
str.find(문자열) 문자열 내부의 특정 문자열 찾기
str.upper() 문자열을 대문자로 바꾸기
str.lower() 문자열을 소문자로 바꾸기
str.replace(문자열, 바꿀 문자열) 문자열 내부의 특정 문자열 바꾸기
str.split(기준 문자열) 문자열 분리하기
str.isspace() 문자열에 공백이 있는지 체크하기

 

입력 처리

input(str)함수를 이용한다. 

name = input('이름을 입력하세요 : ')
print('%s님 환영합니다' % name)

Q. 위의 예제는 name의 type을 출력하면 십중팔구 문자열이 나올것이다. 그러면 숫자를 입력받으면 정수형으로 들어가는가?

old = input('나이를 입력하세요 : ')
print('%d살이십니다.' % old)

이 코드는 에러를 발생시킨다. 즉 여기서 old는 숫자가 아닌 문자열이다. 실제로 타입을 출력해보면

str, 즉 문자열로 출력이된다.

저 상태로 에러가 안나게 프로그램을 완성하고 싶으면 문자열을 정수로 바꿔주는 과정이 필요하다.

 

old = input('나이를 입력하세요 : ')
old = int(old)
print('%d살이십니다.' % old)

int() 함수는 문자열을 정수로 바꾸어서 정수 값을 반환한다.

에러가 나지 않는다.

자매품으로 float() 함수또한 존재한다. 문자열을 실수형으로 바꿔준다.

Comments