본문 바로가기
Python/기초 과정

05 파이썬 문자형 특징3

by To올라운더 2023. 6. 11.
반응형

문자형 특징1(문자형 표기 방법, 탈출문자, 문자형 연산)

2023.06.10 - [IT 배우기/Python] - 03 파이썬 문자형 특징1

 

03 파이썬 문자형 특징1

앞선 시간에 각 자료형별 선언 방법에 대해 알아봤고, 2023.06.09 - [IT 배우기/Python] - 02. 파이썬 자료형 02. 파이썬 자료형 우리는 앞에서 필요한 값들을 변수에 저장하는 방법을 배웠다. 2023.06.06 - [I

to-all-rounder.tistory.com

문자형 특징2(인덱싱, 슬라이싱, find, index)

2023.06.10 - [IT 배우기/Python] - 04 파이썬 문자형 특징2

 

04 파이썬 문자형 특징2

지난 번 문자형 특징 1(탈출문자, 연산 등) 에 이어 2023.06.10 - [IT 배우기/Python] - 03 파이썬 문자형 특징1 03 파이썬 문자형 특징1 앞선 시간에 각 자료형별 선언 방법에 대해 알아봤고, 2023.06.09 - [IT

to-all-rounder.tistory.com

를 거쳐 대망의 문자형의 특징을 마지막으로 다루는 세번째 시간이다.

 

 

[1] 문자형(String)


6.문자형 포멧

- 문자형 데이터의 경우, 다른 텍스트들과 혼용하는 경우가 빈번히 발생하는데,

이때까지의 포스팅에서는 같은 문자형의 경우, '+' 연산자를 이용할 때

해당 문자열을 연결시켜주는 특징을 이용하여 원하는 결과를 나타내는 방법을 보여주었다.

- '+' 를 쓰는 방법 외에도 몇 가지가 더 있는데 해당 내용을 알아보도록 하겠다.

: 결과는 동일하기 때문에 선택은 사용자의 몫이다.

 

1) '+' 연산자 이용하기

: 우리가 흔히 다루던 형태이다.

my_name = 'To올라운더'
print(type(my_name)) # 결과 값 : str
print(my_name + '의 블로그에 오신걸 환영합니다.')

 

2) ',' 연산자를 이용하는 방법

: '+' 연산자와 유사한 것으로 보이나 결과 값을 확인해보면,

my_name 변수 뒤에 띄어쓰기 포함 유무가 다르게 나타나는 것을 볼 수 있다.

3번라인과 같이 문자형 변수들 사이에 '+' 를 사용할 때는 두 문자형이 띄어쓰기 없이 연결되는 것과 달리

4번라인과 같이 ','를 사용할 때는 띄어쓰기 한칸이 기본 값으로 입력된다.

5번라인의 경우 변수 사이의 표기를 어떻게 할건지 설정하는 sep 와 문자 종료 후 입력을 나타내는 end인데,

해당 2개의 파라미터는 print문이 가지고 있는 파라미터이다.

그래서 '+'와 ',' 모두 동일하게 사용할 수 있고,

예시를 위해 띄어쓰기 대신 슬러쉬('/'), 마지막 엔터 1번 입력 대신 2번 입력되는 파라미터를 설정했다.

(*터미널에서 마지막 출력 후, 한줄이 더 비어있는 것을 확인할 수 있다.)

my_name = 'To올라운더'
print(type(my_name)) # 결과 값 : str
print(my_name + '의 블로그에 오신걸 환영합니다.') # sep, end 기본 값 일 때
print(my_name, '의 블로그에 오신걸 환영합니다.') # sep, end 기본 값 일 때
print(my_name, '의 블로그에 오신걸 환영합니다.', sep='/', end='\n\n')

 

위의 더하기와 콤마를 이용하는 방법은 직관적이나 유의해야할 사항이 2가지가 있는데,

첫번째는 입력 전 자료형이 문자형인지 확인을 해야한다는 것이고,

두번째는 한줄에 많은 변수를 넣을 경우 지저분하고 복잡해보인다는 것이다.(=가독성이 떨어진다.)

이런 불편함을 개선하기 위해 아래 방법을 고려해볼 수 있다.

(*상황에 따라 '+'와 ',' 방법이 더 간결하게 사용될 수도 있다.)

my_name = 'To올라운더'
my_height = 180
my_weight = 80
print('안녕하세요. ' + my_name + '입니다. 저의 키는 ' +str(my_height) +'이고 몸무게는 ' + str(my_weight) + '입니다.' )

※ 위의 코드에서 본 것과 같이 다른 자료형을 str로 감싸주게 되면 자료형을 문자형으로 바꿀 수 있다.

int1 = 10
print(str(int1))
print(type(str(int1)))
lists = [1,2,3,4]
print(str(lists))
print(type(str(lists)))

 

반응형

 

 

3) 포맷팅을 이용하는 방법

- 대부분의 프로그래밍 언어에서는 키는 숫자 자료, 이름은 문자 자료처럼

   자료유형에 따라 결과를 입력할 수 있도록 미리 정해둔다.

   다소 불편할 수 있지만, 미리 지정함으로써 키와 같이 숫자가 입력되어야 할 곳에

   글자가 입력되는 등의 에러 요소는 줄일 수 있는데,

   파이썬의 경우 변수 선언 시 자동으로 프로그래밍 언어에서 알아서 지정해주기 때문에

   우리는 해당 포맷을 고려하지 않고 편리하게 사용했다.

- 간략하게만 알아보면, 아래와 같다.

%s 문자열(string) %c 문자 1개(character)
%d 정수(integer) %f 부동소수(float)
%o 8진수 %x 16진수
print('개는 사람과 달리 %d 개의 다리를 가지고 있다.' % 4)
print('나의 시력은 %f 이다.' % 1.2)
print('나는 %s 에 살고 있다.' % '부산')

자료형별로 출력이 잘 되는 것을 볼 수 있는데,

위의 코드를 모두 %s로 바꿔보면 위와 결과가 동일 출력이된다.

심지어 부동소수형(실수)의 경우, 우리가 원하는 형태에 더 가깝게 출력된 것 처럼 보인다.

(* 위의 1.20000도 %0.1f로 변경하면, 1.2가 출력된다. %0.2f의 출력 값은 1.20)

다른 말로 모든 유형의 값을 문자형(%s)가 받을 수 있다는 것이다.

print('개는 사람과 달리 %s 개의 다리를 가지고 있다.' % 4)
print('나의 시력은 %s 이다.' % 1.2)
print('나는 %s 에 살고 있다.' % '부산')

마치 처음 출력할 때 str(숫자형 변수)를 변경하는 것과 같은 모습인데 이런 포맷팅 방법을 통해

문자는 물론, 숫자, 변수 까지도 출력할 수 있다.

print('개는 사람과 달리 %s 개의 다리를 가지고 있다.' % 4) # 숫자
print('나는 %s 에 살고 있다.' % '부산') # 문자
hobby1 = '게임'
print('나의 취미는 %s 입니다.' %hobby1) # 변수
hobby2 = '야구'
print('나의 취미는 %s 와 %s 입니다.' %(hobby1, hobby2)) # 변수 2개 입력





4) format 함수 사용

- 포맷팅 방법과 유사하지만 추가적인 기능을 할 수 있다면

  순서를 조정하거나, 반복적으로 사용할 수 있다는 것이다.

- 사용방법은 위의 포멧팅에서 %s를 중괄호('{ }')로 바꾸고, 뒤에 % 값 부분을 .format(값) 으로 입력하면 된다.

print('개는 사람과 달리 {} 개의 다리를 가지고 있다.' .format(4)) # 숫자
print('나는 {} 에 살고 있다.' .format('부산')) # 문자
hobby1 = '게임'
print('나의 취미는 {} 입니다.' .format(hobby1)) # 변수
hobby2 = '야구'
print('나의 취미는 {} 와 {} 입니다.' .format(hobby1, hobby2)) # 변수 2개 입력

여기까지는 위의 포멧팅과 같이 출력이되는 모습이고,

이제 .format의 기능에 맞는 인덱스 값을 지정 또는 반복하는 기능을 확인해보겠다.

3번라인과 4번라인을 보면, 출력 값이 같음을 알 수 있는데,

format 함수에서 아무런 값을 입력하지 않으면 순차적으로 입력되는 것을 알수 있다.

5번라인과 같이 인덱스 번호를 역순으로 변경해주면, 결과도 반대로 나오는 것을 확인할 수 있고,

6번라인처럼 인덱스{1} 만 사용하는 경우, 야구만 2번 출력되는 것을 볼 수 있다.

hobby1 = '게임'
hobby2 = '야구'
print('나의 취미는 {} 와 {} 입니다.' .format(hobby1, hobby2)) # index 0 : hobby1(게임) / index 1 : hobby2(야구)
print('나의 취미는 {0} 와 {1} 입니다.' .format(hobby1, hobby2)) # index 0 : hobby1(게임) / index 1 : hobby2(야구)
print('나의 취미는 {1} 와 {0} 입니다.' .format(hobby1, hobby2)) # index 0 : hobby1(게임) / index 1 : hobby2(야구)
print('나의 취미는 {1} 와 {1} 입니다.' .format(hobby1, hobby2)) # index 0 : hobby1(게임) / index 1 : hobby2(야구)

 

5) f string(f 문자열 포멧팅)

- python 3.6 버전 부터 추가된 기능으로 문자열 앞에 'f'로 표기하고, 실제 변수를 넣는 방법이다.

- 위와 같이 포맷팅이나 .format을 쓸 경우 인덱스 번호를 사용하기 때문에 매번 확인해야 하지만,

f string의 경우 변수를 직접 사용하므로 더 가독성이 좋다.

hobby1 = '게임'
hobby2 = '야구'
print(f'나의 취미는 {hobby1} 와 {hobby2} 입니다.')

- f string은 변수를 사용하기 때문에 실제 연산도 가능하다.

apple_price = 500
print(f'사과 4개의 가격은 {apple_price*4}원 입니다.')

※ 사용방법은 f string 과 유사하지만, r string은 탈출문자 없이 경로를 표기할 때 주로 사용한다.

print('C:\study\test\new') # r string 미사용 시에는 탈출문자가 적용됨
print('C:\study\\test\\new') # \s는 탈출문자가 아니기 때문에 1개, \t와 \n은 2개 등 사용이 번거로움
print(r'C:\study\test\new') # r string 적용 시 탈출문자가 적용되지 않음

6. 자주 사용하는 문자열 매소드(Method)들

  - 아직 클래스에 대해 배우지 않았기 때문에 간단히 문자형(string) 자료에서 자주 사용하는 함수라고 생각하면 된다.

  - 사용방법은 '변수명.매소드(옵션)' 의 형태로 사용한다.

    * 기본 옵션을 사용하더라도 괄호 표기는 꼭 해야한다!!

 

 6-1) replace 

 - replace는 일부를 변경 할 때 사용하는 매소드이다. 

str1 = 'python is best'
str2 = replace(str1, 'best', 'love')
print(str2) # 결과 값 : python is love

 6-2) strip(lstrip, rstrip)

 - 공백을 제거 하는 매소드이다.

 - 종류에 따라 좌우의 모든 공백이 사라지거나, 좌측 또는 우측만 사라지게도 할 수 있다.

 - 아래의 코드를 확인해보면 공백제거 매소드 적용 및 해당 변수의 길이를 출력하고 있다.

    수정이 없는 원본(2번 라인)의 경우 python 의 좌우 띄어 쓰기가 2칸씩 포함되어 있다.

    그러나 strip, rstrip, lstrip의 적용 여부를 확인해보면 띄어 쓰기 제거 및 변수의 길이도 줄어드는 것을 확인할 수 있다.

str1 = '  python  '
print('origin : ' + str1 + str(len(str1)))
print('strip : ' + str1.strip() + str(len(str1.strip())))
print('rstrip : ' + str1.rstrip() + str(len(str1.rstrip())))
print('lstrip : ' + str1.lstrip() + str(len(str1.lstrip())))

 6-3) split

  - 여러 단어가 변수로 들어 올 떄 해당 단어를 기준에 맞게 리스트로 나눠준다.

  - 아래와 같이 입력된 문장의 단어를 분석하는 용도로 사용을 할 수도 있고,

    원하는 기호를 기준으로 문자형을 나눌 수도 있다.

str1 = 'python is best language for beginner'
print(str1.split()) # 기본 값 띄어쓰기(' ')
str2 = '010-1234-5678'
print(str2.split('-')) # '-' 기준으로 분리

 

 6-4) zfill

  - 자릿수에 맞게 0 을 채우는 방법이다.

  - 숫자형으로 가지고 있는 온도나 키와 같은 값들이 문자형으로 변경하게 되면 

    0을 생략한 상태로 변환된다.

  - 일반적으로 상관은 없으나, 자료를 보기에 일관성이 떨어지고 정렬시 정렬 순서가 이상하게 나올 수 있기 때문에

    원하는 자릿수에 맞게 0을 포함하여 문자형으로 바꿀 수 있다. 

  - '변수명.zfill(자릿수)' 로 사용한다.

temperature1 = '18'
temperature2 = '20'
temperature3 = '5'

print(temperature1, temperature2, temperature3, sep='/')
print(temperature1.zfill(2), temperature2.zfill(2), temperature3.zfill(2), sep='/')

 

 

6-5)  그 외 매소드들

  - 사실 문자형은 이것보다 훨씬 많은 매소드(함수 또는 명령어)들을 가지고 있으나,

    전체를 설명하기에는 포스팅이 제한되어 위의 매소드로 마무리 지으려 한다.

  - 아래 코드를 보면 문자형 변수 str1 이 str 객체 임을 알 수 있는데,

    dir(객체종류)를 출력해보면, 사용할 수 있는 전체 매소드들을 확인할 수 있다.

str1 = 'python'
print(type(str1)) # 객체 확인
print(dir('str')) #

 

코딩... 열심히 교육을 들어도 많이 낯설고 이해가 안되시는 부분이 많으실 겁니다.

하지만 분명히 어제보단 오늘 더 코딩에 대해서 많은 걸 배우신 겁니다.

오늘부로 문자형을 끝내고 다음 포스팅에서는 숫자형자료(int, float)를 알아보도록 하겠습니다.

반응형

'Python > 기초 과정' 카테고리의 다른 글

06 파이썬 숫자형 특징  (0) 2023.06.12
04 파이썬 문자형 특징2  (0) 2023.06.10
03 파이썬 문자형 특징1  (1) 2023.06.10
02. 파이썬 자료형  (2) 2023.06.09
01. 파이썬 변수편  (0) 2023.06.06