[#4] 파이썬에서 문자열(String) 만들기

자료형에는 숫자형 말고도 문자로 이루어진 문자열(String) 형태도 있습니다.
문자열은 연속된 문자들의 나열을 뜻하는데, 바로 예시로 들어가면서 알아보겠습니다.
"The guy learning python"
"가나다"
"123"
위를 보면 모든 예문이 큰따옴표(")로 둘러싸여 있는 것을 볼 수 있습니다.
이렇게 파이썬은 따옴표로 둘러싸여 있는 것은 모두 '문자열'로 인식하게 됩니다.
🔶 따옴표로 문자열을 표현하는 네 가지 방법
따옴표를 통해서 문자열을 표현하는 방법은 총 네가지가 있습니다.
작은따옴표('), 큰따옴표("), 작은따옴표 3개('''), 큰따옴표 3개(""")가 있죠.
🔹큰따옴표로 문자열 표현하기
"Python is my life"
🔹작은따옴표로 문자열 표현하기
'Python is my life'
🔹큰따옴표 3개로 문자열 표현하기
"""Python is my life"""
🔹작은따옴표 3개로 문자열 표현하기
'''Python is my life'''
그런데 아래와 같은 의문점이 하나 생길 수 있을 겁니다.
'따옴표로 감싸면 문자열이 되는건 알겠는데, 그럼 내가 문자열안에 따옴표를 넣고싶을 땐 어쩌지?'
바로 위 처럼 말이죠. 위의 의문 역시 작은따옴표(')로 둘러싸여있죠? 저걸 표현하려면 어떻게 해야할까요??
🔶 문자열 안에 따옴표를 넣고싶다면
문자열안에도 당연히 작은따옴표나 큰따옴표 등을 쓸 수 있습니다.
다만 무작정 써버리면 구문오류(Syntaxerror)가 나버리기 때문에 몇 가지 간단한 룰을 알아야 합니다.
🔹문자열에 작은따옴표 포함하기
만약 문자열안에 작은따옴표를 넣고싶다면, 이를 큰따옴표로 감싸주면 됩니다.
그러면 큰따옴표 안에 있는 작은따옴표는 기호로 인식되지 않게 됩니다.
says = "She's my mother"
says
She's my mother
🔹문자열에 큰따옴표 포함하기
위와 같은 원리입니다. 반대로 작은따옴표로 감싸주면 큰따옴표를 기호로 인식하지 않게 됩니다.
says = 'he says, "Python is my life"'
says
he says, "Python is my life"
이렇게 단순히 서로 상반되는 따옴표를 써서 하는 방법도 있지만, 또 다른 방법이 하나 더 있습니다.
바로 역슬래시(\)를 이용하는 겁니다. 이 역슬래시는 보통 엔터키 바로 위에 위치해 있습니다.
역슬래시를 작은따옴표나 큰따옴표 앞에 삽입하면 역슬래시 바로 뒤에 딸려오는 따옴표는 기호로 인식하지 않게 됩니다.
says = 'she\'s my mother'
say = "he says, \"Python is my life\""
print(says)
pirnt(say)
She's my mother
he says, "Python is my life"
🔶 문자열을 여러 줄 쓰고 싶을 때
우리가 문자를 쓸 땐 항상 한줄만 쓰지 않습니다.
여러줄을 써야할 땐 필수적으로 줄바꿈을 해줘야 하는데, 이를 간단하게 하는 방법도 알아보겠습니다.
🔹이스케이프 코드 중 하나인 \n 삽입하기
줄을 바꾸고 싶은 위치에 (\n)을 넣으면 그 다음부터 나오는 문자열은 줄바꿈이 된 상태로 출력됩니다.
writeline = "This is for you\nThank you"
print(writeline)
This is for you
Thank you
다만 \n을 사용한 줄바꿈은 읽기도 불편할 뿐더러, 줄바꿈 하기 전 문자열이 상당히 길어진다는 단점이 있습니다.
위와 같은 단순한 문장이면 별 문제가 없겠지만, 저게 수천줄의 내용이 들어가있는 것이라면? 상상만해도 끔찍하죠.
파이썬에서는 이러한 단점을 보완하기 위해 이스케이프 코드 말고 따옴표를 이용한 또 다른 방법을 제시합니다.
🔹연속된 따옴표 3개 사용하기
작은따옴표나 큰따옴표 3개를 연속으로 사용하게 되면 그 안에 들어간 문자열들은 정렬한 모습 그대로 출력됩니다.
한번 이를 이용해서 시를 써봅시다.
poem = """
"별 헤는 밤"
계절이 지나가는 하늘에는
가을로 가득차 있습니다.
나는 아무 걱정도 없이
가을 속의 별들을 다 헤일 듯합니다.
-윤동주-
"""
print(poem)
poem2 = '''
"청산별곡"
살어리 살어리랏다 청산에 살어리랏다
살겠노라 살겠노라. 청산에 살겠노라.
-작자 미상-
'''
print(poem2)
위와 같은 코드를 출력해보면 큰따옴표 3개나 작은따옴표 3개나 결과 자체는 같다는 것을 알 수 있습니다.
또한 따옴표 내에 적힌 내용들이 줄바꿈 등 형태가 그대로 유지되며 출력되는 것도 확인할 수 있습니다.
이스케이프 코드로 하나하나 설정해주는것 보다는, 이렇게 따옴표 3개로 묶는 것이 훨씬 깔끔하죠.
🔑 이스케이프 코드란?
이스케이프(escape) 코드란 프로그래밍을 할 때 사용할 수 있도록 미리 정의해 둔 '문자 조합'을 말합니다.
주로 출력물등을 보기 좋게 정렬하는 용도로 사용합니다.
| 이스케이프 코드 | 설명 |
| \n | 문자열 안에서 줄을 바꿀 때 사용 |
| \t | 문자열 사이에 탭 간격을 줄 때 사용 |
| \\ | \ 문자를 그대로 표현할 때 사용 |
| \' | 작은따옴표(')를 그대로 표현할 때 사용 |
| \" | 큰따옴표(")를 그대로 표현할 때 사용 |
| \r | 캐리지 리턴 (커서를 현재 줄의 맨 앞으로 이동) |
| \f | 폼 피드 (페이지 나눔, 일부 출력 장치에서 줄 바꿈처럼 작동) |
| \a | 벨 소리 (출력 시 PC 스피커에서 '삑' 소리가 남) |
| \b | 백 스페이스 (이전 문자 삭제 효과) |
| \000 | 널 문자 (값이 0인 문자, 문자열 종료를 나타내기도 함) |
AI피드백
Q. 오늘은 자료형 문자열에 대해서 공부했어. 작은따옴표와 큰따옴표를 이용해서 문자열을 출력하는것부터, 따옴표로 감싸서 안에 따옴표를 문자처럼 쓰는 방법, 그리고 따옴표3개를 이용해서 안에 들어있는 문자열을 묶은다음 작성한 모양대로 출력하는 방법, 이스케이프 코드를 활용한 문자열 정렬이나 활용 방식등을 배웠지.
이걸 어디다 써먹으면 좋을까?? 그리고 생각보다 내용자체는 굉장히 쉬운편에 속했는데 이것도 응용했을땐 어려울 수 있는건가?? 네가 문제를 내 줬으면 좋겠어
A. 오늘 네가 배운 건 단순히 "문자 출력"이 아니라, **“텍스트 데이터를 자유롭게 표현하고 제어하는 힘”**이야.
이건 앞으로 프로그램을 만들 때, 사용자와 대화하거나, 로그를 출력하거나, 스토리를 보여줄 때 거의 무조건 쓰이는 기술이지.
✅ 문자열이 쓰이는 실제 예시
| 분야 | 문자열 쓰임 |
| 게임개발 | 캐릭터 이름, 대사 출력, 상태창 정보 표시 등 |
| 웹 개발 | 버튼 텍스트, 알림 메시지, HTML 코드 내 텍스트 |
| 파일 처리 | 로그 기록, 텍스트 파일 저장, 불러오기 |
| 사용자 인터페이스 | 메뉴 구성, 안내문구, 선택지 표현 등 |
| 에러 처리 | printf("오류: %s\n", err_message); 같은 디버깅 메시지 |
🧠 쉬워 보여도 응용되면 어려워지는 이유
- 줄바꿈, 들여쓰기, 따옴표 중첩 등에서 헷갈리기 쉽고
- 사용자 입력을 받거나 동적으로 문자열을 구성할 때 자료형 충돌이나 포맷팅 오류가 생기기도 해
- 특히 이스케이프 문자 \n, \t, \" 등은 실수로 잘못 써서 오류를 만드는 대표적인 부분
🧪 연습 문제 (난이도별 3단계, 총 6문제)
🔹 1단계: 쉬움 (기초 표현력)
1-1. 홍길동이라는 이름을 큰따옴표로 감싸서 "홍길동" 이라고 출력되게 해보세요.
1-2. 다음 문장을 한 줄로 출력해보세요:
나는 오늘도 코딩을 한다.
"왜 이렇게 재밌지?"
🔹 2단계: 중간 (이스케이프 코드 응용)
2-1. 다음과 같이 출력되게 코드를 작성해보세요:
Name Age
---- ---
Noma 27
2-2. 줄바꿈을 활용해서, 아래처럼 출력되게 해보세요:
첫째 줄입니다.
둘째 줄입니다.
셋째 줄입니다.
🔹 3단계: 어려움 (문자열 포맷팅 + 따옴표 응용)
3-1. 아래 문장을 1줄의 코드로 출력해보세요. 단, 따옴표 중첩이 필요합니다.
그녀가 말했다: "나는 '코딩'이 좋아요."
3-2. 따옴표 3개(""")를 활용하여 아래처럼 모양을 유지한 채 출력되게 해보세요:
*****
* *
* *
*****