문자열(string)은 순서대로 나열되어 있는 문자들을 다루기에 편리한 자료형입니다. 글자를 여러 개 담을 수 있다는 점에서 넓은 의미로 컨테이너(container) 자료형 중의 하나로 분류가 됩니다. 컨테이너 자료형들 중에서도 원소(element)들이 순서대로 나열되어 있다는 점에서 시퀀스(sequence)로 다시 분류가 됩니다. 수학에서는 수열을 시퀀스(sequence)라고 부릅니다. 수학적 정의는 자연수 집합을 정의역으로 갖는 함수인데 간단히 수의 나열 정도로 이해하시면 되겠습니다. 시퀀스(나열)로 분류되는 자료형에는 문자열(string) 외에도 리스트(list)와 튜플(tuple)이 더 있습니다. 시퀀스에서는 인덱싱(indexing) 과 슬라이싱(slicing)을 사용할 수 있습니다. 파이썬의 문자열 사용법 중 우선 1편으로 리터럴 만들기와 출력하기 그리고 인덱싱과 슬라이싱에 대해 먼저 알아보고 2편에서는 문자열의 불변성과 문자열 매소드 그리고 문자열의 포맷팅에 대해 공부하는 시간을 갖도록 하겠습니다.
문자열 사용법 (Strings)
문자열(string)은 순서대로 나열되어 있는 문자들을 다루기에 편리한 자료형입니다.
글자를 여러 개 담을 수 있다는 점에서 넓은 의미로 컨테이너(container) 자료형 중의 하나로 분류가 됩니다.
컨테이너 자료형들 중에서도 원소(element)들이 순서대로 나열되어 있다는 점에서 시퀀스(sequence)로 다시 분류가 됩니다. 수학에서는 수열을 시퀀스(sequence)라고 부릅니다. 수학적 정의는 자연수 집합을 정의역으로 갖는 함수인데 간단히 수의 나열 정도로 이해하시면 되겠습니다. 시퀀스(나열)로 분류되는 자료형에는 문자열(string) 외에도 리스트(list)와 튜플(tuple)이 더 있습니다.
시퀀스에서는 인덱싱(indexing)과 슬라이싱(slicing)을 사용할 수 있습니다.
- 문자열 리터럴 만들기
- 문자열 출력하기
- 인덱싱(indexing)과 슬라이싱(slicing)
- 문자열의 불변성
- 문자열의 메써드
- 문자열의 포매팅
# 큰따옴표 사용
"시작은 늦었지만 끝은 위대한 늦깍이 디지털 노마드"
'시작은 늦었지만 끝은 위대한 늦깍이 디지털 노마드'
# 작은따옴표 사용하여 문자열을 출력할 수 있습니다.
'starting is late but ending is the greatest'
'starting is late but ending is the greatest'
# 큰따옴표 안에서 작은따옴표 사용이 가능합니다.
"I'm your father"
"I'm your father"
# 작은따옴표 안에서 작은따옴표를 사용하면 오류가 발생합니다.
'I'm your father'
Input In [4]
'I'm your father'
^
SyntaxError: invalid syntax
# 작은따옴표 안에서 큰따옴표 사용이 가능합니다.
'초보일때는 "프로그래밍"이 어렵고 힘들지만 노력하면 할 수 있어'
'초보일때는 "프로그래밍"이 어렵고 힘들지만 노력하면 할 수 있어'
# 큰따옴표 안에서 큰따옴표 사용하면 오류가 발생합니다.
"초보일때는 "프로그래밍"이 어렵고 힘들지만 노력하면 할 수 있어"
Input In [6]
"초보일때는 "프로그래밍"이 어렵고 힘들지만 노력하면 할 수 있어"
^
SyntaxError: invalid syntax
문자열 출력하기
"안녕하세요? 반갑습니다. 나는 프로그래밍을 잘 하고 싶어요"
'안녕하세요? 반갑습니다. 나는 프로그래밍을 잘 하고 싶어요'
# print()를 사용하면 따옴표가 출력되지 않습니다.
print("안녕하세요? 반갑습니다. 나는 프로그래밍을 잘 하고 싶어요")
안녕하세요? 반갑습니다. 나는 프로그래밍을 잘 하고 싶어요
# 두 줄 출력하며면 print()함수를 두 번 사용하는 방법도 있습니다.
print("안녕하세요? 반갑습니다.")
print("나는 프로그래밍을 잘 하고 싶어요")
안녕하세요? 반갑습니다.
나는 프로그래밍을 잘 하고 싶어요
# 줄바꿈을 해서 출력하려면 '\n' 을 사용하는 방법도 있습니다.
print("안녕하세요? 반갑습니다. \n나는 프로그래밍을 잘 하고 싶어요")
안녕하세요? 반갑습니다.
나는 프로그래밍을 잘 하고 싶어요
# Escape character 사용할 때는 빈칸에 주의해야 합니다.
print("안녕하세요? 반갑습니다. \n 나는 프로그래밍을 잘 하고 싶어요")
안녕하세요? 반갑습니다.
나는 프로그래밍을 잘 하고 싶어요
탭(tab) 사용 \t
빈칸 포함 8칸을 채우고 그다음 내용을 출력합니다. 8칸이 다 차는 경우 빈칸을 8칸 채우고 다음의 내용을 출력합니다.
# 탭 규칙
print("\t12345678")
print("1\t12345678")
print("12\t12345678")
print("123\t12345678")
print("1234\t12345678")
print("12345\t12345678")
print("123456\t12345678")
print("1234567\t12345678")
print("12345678\t12345678")
12345678
1 12345678
12 12345678
123 12345678
1234 12345678
12345 12345678
123456 12345678
1234567 12345678
12345678 12345678
# 탭 규칙 (참고: 반복문 이용)
a = ""
for i in range(1, 25):
print(a + "\t12345678")
a += str(i % 9)
12345678
1 12345678
12 12345678
123 12345678
1234 12345678
12345 12345678
123456 12345678
1234567 12345678
12345678 12345678
123456780 12345678
1234567801 12345678
12345678012 12345678
123456780123 12345678
1234567801234 12345678
12345678012345 12345678
123456780123456 12345678
1234567801234567 12345678
12345678012345678 12345678
123456780123456780 12345678
1234567801234567801 12345678
12345678012345678012 12345678
123456780123456780123 12345678
1234567801234567801234 12345678
12345678012345678012345 12345678
# 백스페이스(backspace)는 맥 마지막 문자를 삭제하고 출력이 됩니다.
print("오늘은 가족과 함께 영덕과 울진에 다녀왔어요!\b")
오늘은 가족과 함께 영덕과 울진에 다녀왔어요!
# 백슬래쉬(backslash)를 출력하고 싶은 경우는 백슬래쉬를 두 번 입력합니다.
print("1,000,000,000,000\\")
1,000,000,000,000\
# 파일의 저장 경로를 나타내는 경우에 백슬래쉬를 두 번 사용할 수 있습니다.
print("C:\\사용자\\user\\Python")
C:\사용자\user\Python
# Raw strings: 앞에 r을 붙이며 백슬래쉬를 일반적인 문자로 처리하여 저장경로 등 필요시에 더 편하게 사용할 수 있습니다.
print(r"C:\사용자\user\Python") # r, R 대소문자 모두 사용 가능합니다.
C:\사용자\user\Python
# 여러 줄로 리터럴을 만들고 싶은 경우 아래와 같이 사용하면 오류가 생깁니다.
m = "안녕하세요?
반갑습니다.
저는 꼭 여러 줄을 사용하고 싶네요.
"
Input In [23]
반갑습니다.
^
SyntaxError: invalid syntax
# 큰따옴표를 3개씩 사용하여 여러 줄을 출력할 수 있습니다.
m = """안녕하세요?
반갑습니다.
저는 꼭 여러 줄을 사용하고 싶네요.
"""
print(m)
안녕하세요?
반갑습니다.
저는 꼭 여러 줄을 사용하고 싶네요.
# 작은따옴표를 3개씩 사용하여 여러 줄을 출력할 수도 있습니다.
m = """안녕하세요?
반갑습니다.
저는 꼭 여러 줄을 사용하고 싶네요.
"""
print(m)
안녕하세요?
반갑습니다.
저는 꼭 여러 줄을 사용하고 싶네요.
# 줄 마지막에 백슬래쉬를 넣으면 줄바꿈을 없애줄 수 있습니다.
m = """안녕하세요?\
반갑습니다.
저는 꼭 여러 줄을 사용하고 싶네요.
"""
print(m)
안녕하세요?반갑습니다.
저는 꼭 여러 줄을 사용하고 싶네요.
# 줄 마지막에 백슬래쉬를 넣으면 줄바꿈을 없애줄 수 있습니다.
m = """안녕하세요?
반갑습니다.\
저는 꼭 여러 줄을 사용하고 싶네요.
"""
print(m)
안녕하세요?
반갑습니다.저는 꼭 여러 줄을 사용하고 싶네요.
# 문자열 2개는 자동으로 합쳐집니다.
"오늘 영덕에서 먹은 점심은 " "들깨칼국수와 왕만두"
'오늘 영덕에서 먹은 점심은 들깨칼국수와 왕만두'
# 변수명과 표현식은 함께 사용하여도 합쳐지지 않습니다.
s = "오늘 영덕에서 먹은 점심은 "
s "들깨칼국수와 왕만두"
Input In [32]
s "들깨칼국수와 왕만두"
^
SyntaxError: invalid syntax
# 더하기 연산자 + 를 사용하여 두 문자를 더해서 출력할 수 있습니다.
"오늘 영덕에서 먹은 점심은 " + "들깨칼국수와 왕만두 가격은 " + str(30000)
'오늘 영덕에서 먹은 점심은 들깨칼국수와 왕만두 가격은 30000'
# 변수명과 표현식의 경우도 더하기 연산자를 사용하여 나타낼 수 있습니다.
s = "오늘 영덕에서 먹은 점심은 "
s + "들깨칼국수와 왕만두"
'오늘 영덕에서 먹은 점심은 들깨칼국수와 왕만두'
# 곱하기 연산자는 반복
"맛있어" * 3
'맛있어맛있어맛있어'
표현식(expression) 은 계산해서 어떤 값이 나오는 식을 의미합니다.
인덱싱(indexing)과 슬라이싱(slicing)
# 길이 재기 : len() 빈칸을 포함하여 길이를 나타냅니다.
a = "Python is Amazing!"
len(a)
18
# 한글 길이 재기
len("지금 저를 제외한 모든 가족이 자고 있어요!")
24
여러 글자로 이루어진 문자열에서 글자 하나를 가져오기 위해서는 대괄호 [] 안에 위치를 의미하는 숫자(인덱스)를 넣어줍니다. 이것을 인덱싱이라고 부릅니다. 문자열 외의 리스트나 튜플 같은 시퀀스(sequence)에도 사용이 가능하며 인덱스는 0부터 시작됩니다.
# Python is Amazing!
# 0123456789...
a = "Python is Amazing!"
a[3], a[9]
('h', ' ')
# Python is Amazing!
# 0123456789...
# 인덱스 -1은 마지막을 나타냅니다.
a[-1]
'!'
# Python is Amazing!
# 0123456789...
# 음의 인덱스는 역순으로 가져옵니다.
a[-3]
'n'
# Python is Amazing!
# 0123456789...
# 글자 수 이상의 인덱스를 사용할 경우 오루가 발생합니다. 위에서 print(len(a))의 경우 18이였습니다.
print(len(a))
print(a[20])
18
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Input In [43], in <cell line: 5>()
1 # Python is Amazing!
2 # 0123456789...
3 # 글자 수 이상의 인덱스를 사용할 경우
4 print(len(a))
----> 5 print(a[20])
IndexError: string index out of range
인덱싱의 기능을 확장해서 일부를 잘라서 가져오는 것을 슬라이싱이라고 부릅니다.
# 콜론 앞의 숫자는 잘라내기 시작하는 위치이며 콜론 뒤에 아무것도 쓰지 않는 경우 인덱스 5이후의 모든 것을 출력합니다.
# Python is Amazing!
# 0123456789...
a[5:]
'n is Amazing!'
# 첫 번째 콜론 오른쪽의 숫자는 '포함되지 않는' 마지막 위치입니다.
# 마지막 위치의 하나 전까지 포함됩니다.
# Python is Amazing!
# 0123456789...
a[:9]
'Python is'
# a[:i] + a[i:]는 a와 동일합니다.
a[:5] + a[5:]
'Python is Amazing!'
# 마지막 위치에 음의 인덱스를 사용할 수도 있습니다. 그럴 경우 인덱스 -1에 해당하는 것은 포함하지 않습니다.
# Python is Amazing!
# 0123456789...
a[:-1]
'Python is Amazing'
# 시작과 끝을 모두 사용할 수 있습니다.
# Python is Amazing!
# 0123456789...
a[5:9]
'n is'
# 시작에 len(a) 이상의 인덱스 사용시 마지막 인덱스 < len(a) 이므로 빈 칸이 출력됩니다.
a[len(a):]
''
# 건너 뛰면서 가져오고 싶을 때는 두번째 콜론 오른쪽에 1외의 숫자를 사용하면 사용한 숫자만큼의 간격으로 문자가 출력됩니다.
# 한걸음 두걸음 할 때와 같은 의미의 step이라고 부릅니다.
# Python is Amazing!
# 0123456789...
a[::2]
'Pto sAaig'
a[::3]
'Ph an'
# 스텝(step)에 음수를 사용하면 역순으로 가져옵니다.
# Python is Amazing!
# 0123456789...
a[::-1]
'!gnizamA si nohtyP'
# 시작, 종료, 스텝 세 가지를 모두 사용할 수 있습니다.
# Python is Amazing!
# 0123456789...
a[2:16:3]
'tnsmi'
# 음의 스텝을 사용할 때는 시작과 종료도 순서가 역순이어야 합니다.
# Python is Amazing!
# 0123456789...
a[12:3:-2]
'aAs o'
# 음의 스텝을 사용할 때는 시작과 종료도 순서가 역순이어야 합니다. 그렇지 않을 경우 빈 칸이 출력됩니다.
# Python is Amazing!
# 0123456789...
a[0:17:-2]
''
# 종료를 생략하면 마지막까지 포함합니다.
a[-1::-1]
'!gnizamA si nohtyP'
오늘은 문자열 사용법 중
1. 문자열 리터럴 만들기
2. 문자열 출력하기
3. 인덱싱(indexing)과 슬라이싱(slicing)
에 대해 살펴보았습니다. 다음 편에서는
4. 문자열의 불변성
5. 문자열의 메써드
6. 문자열의 포매팅
에 대하여 알아보는 시간을 갖도록 하겠습니다.
'수학과 코딩' 카테고리의 다른 글
파이썬(python) 컨테이너(containers)-리시트(list)의 사용 방법(가변성) (0) | 2022.07.26 |
---|---|
파이썬(python) 문자열(string) 사용법(use)_불변성, 매소드, 포맷팅 (0) | 2022.07.25 |
파이썬 기초 문법 변수의 사용법 (0) | 2022.07.21 |
주피터 노트북에서 작성한 내용 티스토리 옮기는 법(html) (0) | 2022.07.19 |
주피터 노트북의 기본적인 사용법과 파이썬 기초 (0) | 2022.07.19 |
댓글