본문 바로가기
IT/파이썬 기초 (Python)

#010 파이썬 기초 - 문자열 1

by DoitSQL 2023. 2. 20.
728x90

Python기초강의강좌, 파이썬기초강의강좌, format

파이썬 기초 - 문자열 1   

문자열

문자열이란 '문자의 나열'을 뜻합니다. 문자열은 간단하게 말하자면 문자들의 집합입니다. 
여러분은 아마 앞으로 작성하게 될 거의 모든 파이썬 프로그램에서 문자열을 사용하게 될 것입니다.
따라서, 아래 항목들을 주의 깊게 살펴보고 숙지해야 합니다.


홑 따옴표   

여러분은 홑 따옴표를 이용하여 문자열을 지정할 수 있습니다. 
예를 들어 'Quote me on this'와 같이 하면 됩니다.

모든 공백 문자, 즉 띄어쓰기나 탭 등은 입력한 그대로 유지됩니다.


겹 따옴표   

겹 따옴표로 둘러싸인 문자열은 홑 따옴표로 둘러싸인 문자열과 완전히 동일하게 취급됩니다.
예를 들면, "What’s your name?"과 같습니다.
겹 따옴표로 둘러싸인 문자열 안에 홑 따옴표가 포함되어도 됩니다.


따옴표 세 개   

여러 줄에 걸친 문자열은 세 개의 따옴표로 표현할 수 있습니다 - ( """ 또는 ''' ). 
세 개의 따옴표로 묶인 문자열 안에서는 홑 따옴표든 겹 따옴표든 마음대로 사용할 수 있습니다. 

 

예를 들면 다음과 같습니다.
'''This is a multi-line string. This is the first line.
This is the second line.
"What's your name?, " I asked.
He said "Bond, James Bond."
'''


문자열은 수정이 불가   

여러분이 문자열을 한번 만들면, 그 문자열의 내용은 더 이상 변경할 수 없습니다. 
이것은 어떤 면에서는 좀 불편할 수 있다고 느낄 수 있겠습니다만, 사실은 그렇지 않습니다. 
뒷부분에서 여러 프로그램 예시를 통해 왜 이것이 큰 제약이 아닌지 살펴볼 것입니다.

참고 : 파이썬에서는 char 형이 따로 구분되어 있지 않습니다. 
파이썬에서는 이것이 딱히 필요가 없습니다. 곧 여러분도 char 형을 찾지 않게 될 것입니다.

파이썬에서는 홑 따옴표와 겹 따옴표로 둘러싸인 문자열을 동일하게 취급합니다. 
둘 사이에 어떤 차이도 없습니다.


문자열 포맷팅   

문자열을 생성하려고 할 때, 종종 다른 정보들을 포함하여 생성하고 싶을 때가 있습니다. 
이것을 문자열 포맷팅이라고 하며, 이를 위해 format()을 이용합니다.

다음을 str_format.py라는 이름으로 저장하세요.

age = 20
name = 'Swaroop'
print ('{0} was {1} years old when he wrote this book'. format(name, age))
print ('Why is {0} playing with that python?'.format(name)) 

실행 결과:

C:\Anaconda\envs\study_39\python.exe E:\python_study\str_format.py 
Swaroop was 20 years old when he wrote this book
Why is Swaroop playing with that python? 


동작 원리먼저 중괄호로 표현된 특별한 표시들이 포함된 문자열을 만들고, 
그 후에 문자열의 format 메서드를 사용하여 이 표시들을 format 메서드에 주어진 인자들로 치환한 것입니다.
위 예시에서는 문자열 내에서 첫 번째로 {0} 이 사용되었으며 
이것은 format 메서드에 주어진 첫 번째 인자, 즉 변수 name에 해당됩니다. 

마찬가지로, 두 번째 사용된 표시는 {1}이며 
이것은 format 메서드에 주어진 두 번째 인자인 age에 해당됩니다. 
파이썬은 숫자를 셀 때 항상 0부터 세기 시작한다는 점에 유의하세요. 
즉, 첫 번째 인자의 인덱스는 0이며, 두 번째는 1입니다.

또한 다음과 같이 문자열 더하기를 이용하여 동일한 결과를 얻을 수도 있습니다.
name + ' is ' + str(age) + ' years old'
그러나 이것은 척 보기에도 깔끔하지 못하며, 작성 중 실수하기도 쉽습니다. 

 

또 이 경우 각 변수를 일일이 명시적으로 문자열로 변환해주어야 하지만, 
format 메서드를 이용할 경우에는 알아서 자동으로 변환해 줍니다. 
또 format 메서드를 이용할 경우 변수들을 신경 쓰지 않고 문자열의 내용을 수정하기 쉽고, 
문자열에 신경 쓰지 않고도 변수의 위치나 순서 등을 변경하기가 더 쉽습니다.

이때 중괄호 내에 주어진 숫자는 생략할 수 있습니다. 다음 예제를 확인하세요.

age = 20
name = 'Swaroop'
print ('{} was {} years old when he wrote this book'.format(name, age))
print ('Why is {} playing with that python?'.format(name)) 

위 프로그램 또한 동일한 결과를 출력합니다

파이썬의 `format`은 중괄호 표시의 위치에 주어진 인자들의 값을 치환해 넣습니다. 
이때, 중괄호 표시에 다음과 같이 좀 더 상세히 세부사항을 지정할 수도 있습니다.

# 소수점 이하 셋째 자리까지 부동 소수점 숫자 표기 (0.333)
print ('{0:.3f}'.format(1.0/3))
# 밑줄(_)로 11칸을 채우고 가운데 정렬(^)하기 (___hello___)
print ('{0:_^11}'.format('hello'))
# 사용자 지정 키워드를 이용해 (Swaroop wrote A Byte of Python) 표기
print ('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))  

실행결과

C:\Anaconda\envs\study_39\python.exe E:\python_study\str_format.py 
0.333
___hello___
Swaroop wrote A Byte of Python   


지금까지 문자열 포맷팅에 대해 알아보았습니다. 
여기서 print 명령은 언제나 주어진 문자열의 끝에 "줄 바꿈" 문자 (\n)을 덧붙인다는 것 또한 기억하세요. 
따라서 print 명령을 호출할 때마다 인자로 주어진 내용들은 항상 그다음 줄에 출력됩니다. 


이것을 막기 위해서는, print 명령 뒤에 end=" " 등으로 개행문자 대신에 사용할 end 값을 주면 됩니다.

print ("a", end=" ")
print ("b") 

결과

C:\Anaconda\envs\study_39\python.exe E:\python_study\str_format.py 
a b 


이번 시간에는 파이썬에서 문자열을 처리하는 방법에 대해서 배웠습니다.
문자열 처리에 대한 추가내용은 다음 시간에 이어서 하겠습니다.

 

감사합니다.


Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글