문자열이란?
문자열은 문자들의 집합을 의미한다.
sentence1 = '나는 소년입니다.'
print(sentence1)
sentence2 = "파이썬은 쉬워요."
print(sentence2)
sentence3 = '''
나는 소년이고,
파이썬은 쉬워요.
'''
실행 결과만으로는 문자열인지 확인하기 어렵다.
type()을 사용해 문자열인지 확인할 수 있다.
print(type(sentence1))
print(type(sentence2))
>> <class 'str'>
>> <class 'str'>
>> <class 'str'>
원하는 만큼 문자열 자르기: 슬라이싱
파이썬에는 슬라이싱이라는 방법으로 원하는 만큼 데이터를 자를 수 있다.
슬라이싱을 사용하려면 먼저 인덱스를 알아야 한다.
여러 문자로 구성된 문자열의 n번째 문자(또는 데이터)라고 할 때, n번째가 바로 인덱스이다.
인덱스는 데이터를 저장한 변수명에 대괄호([])를 붙이고 그 안에 숫자를 넣어서 표시한다.
jumin = '990229-1234567'
print('성별 식별번호 : ' + jumin[7])
>> 성별 식별번호 : 1
코드에서 위치를 나타내는 인덱스는 1이 아닌 0부터 시작한다.
변수명[시작 인덱스:종료 인덱스]
jumin = '990229-1234567'
print('연 : ' + jumin[0:2])
print('월 : ' + jumin[2:4])
print('일 : ' + jumin[4:6])
>> 연 : 99
>> 월 : 02
>> 일 : 29
- 변수명[:종료 인덱스] - 처음부터 종료 인덱스 직전까지 슬라이싱
- 변수명[시작 인덱스:] - 시작 인덱스부터 끝까지 슬라이싱
- 변수명[:] - 처음부터 끝까지 슬라이싱
print('생년월일 : ' + jumin[:6])
print('주민번호 뒷자리 : ' + jumin[7:])
>> 생년월일 : 990229
>> 주민번호 뒷자리 : 1234567
앞에서부터가 아니라 뒤에서부터 슬라이싱할 수도 있는데, 이 때는 음수 인덱스를 사용한다.
단, 양수 인덱스일 때는 0부터 시작하지만, 음수 인덱스일 때는 -1부터 시작한다.
print('주민번호 뒷자리(뒤에서부터) : ' + jumin[-7:])
>> 주민번호 뒷자리(뒤에서부터) : 1234567
함수로 문자열 처리하기
함수 | 의미 |
lower() | 문자열을 소문자로 변환 |
upper() | 문자열을 대문자로 변환 |
islower() | 문자열이 소문자인지 확인 |
isupper() | 문자열이 대문자인지 확인 |
replace() | 문자열 바꾸기 |
index() | 찾는 문자열의 인덱스(없으면 오류 발생) |
find() | 찾는 문자열의 인덱스(없으면 -1 반환) |
count() | 문자열이 나온 횟수 |
문자열(또는 변수).함수()
print(python.lower())
print(python.upper())
print(python[0].isupper())
print(python[1:3].islower())
print(python.replace('Python', 'Java'))
>> python is amazing
>> PYTHON IS AMAZING
>> True
>> True
>> Java is Amazing
find(찾는 문자, 시작 인덱스, 종료 인덱스)
index(찾는 문자, 시작 인덱스, 종료 인덱스)
python = 'Python is Amazing'
find = python.find('n') # 처음으로 발견한 n의 인덱스
print(find)
find = python.find('n', find + 1) # 인덱스 6 이후부터 찾아 처음 발견한 n의 인덱스
print(find)
find = python.find('Java') # Java가 없으면 -1을 반환(출력)한 후 프로그램 계속 수행
print(find)
index = python.index('n') # 처음 발견한 n의 인덱스
print(index)
index = python.index('n', index + 1) # 인덱스 6 이후부터 찾아 처음 발견한 n의 인덱스
print(index)
index = python.index('n', 2, 6) # 인덱스 2부터 6 직전까지 찾아 처음 발견한 n의 인덱스
print(index)
index = python.index("Java") # Java가 없으면 오류가 발생하며 프로그램 종료
print(index)
>> 5
>> 15
>> -1
>> 5
>> 15
>> 5
>> ValueError: substring not found
문자열 포메팅
서식 지정자 사용하기
서식 지정자는 자료형을 표현하는 방법으로, % 뒤에 자료형을 나타내는 문자가 붙습니다.
서식 지정자 | 의미 |
%d | 정수(decimal) |
%f | 실수(floating-point) |
%c | 문자(character) |
%s | 문자열(string) |
print('나는 %d살입니다.' % 20)
print('나는 %s를 좋아합니다.' % '파이썬')
print('Apple은 %c로 시작해요.' % 'A')
print('나는 %s살입니다.' % 20)
>> 나는 20살입니다.
>> 나는 파이썬를 좋아합니다.
>> Apple은 A로 시작해요.
>> 나는 20살입니다.
값이 여러개일 때
print('나는 %s색과 %s색을 좋아해요.' % ('파란', '빨간'))
>> 나는 파란색과 빨간색을 좋아해요.
format()함수 사용하기
print('나는 {}살입니다.'.format(20))
print('나는 {}색과 {}색을 좋아해요.'.format('파란', '빨간'))
print('나는 {0}색과 {1}색을 좋아해요.'.format('파란', '빨간'))
print('나는 {1}색과 {0}색을 좋아해요.'.format('파란', '빨간'))
>> 나는 20살입니다.
>> 나는 파란색과 빨간색을 좋아해요.
>> 나는 파란색과 빨간색을 좋아해요.
>> 나는 빨간색과 파란색을 좋아해요.
문자열에 비어있는 중괄호만 표시하면 값이 순서대로 들어가고, {0}, {1}처럼 인덱스를 넣으면 인덱스에 맞춰 {0} 위치에는 값1, {1} 위치에는 값2가 들어간다.
중괄호 안에 이름을 넣을 수도 있다.
print('나는 {age}색과 {color}색을 좋아해요.'.format(age=20, color='빨간'))
print('나는 {age}색과 {color}색을 좋아해요.'.format(color='빨간', age=20))
>> 나는 20색과 빨간색을 좋아해요.
>> 나는 20색과 빨간색을 좋아해요.
f-문자열 사용하기
age = 20
color = '빨간'
print(f'나는 {age}색과 {color}색을 좋아해요.')
>> 나는 20색과 빨간색을 좋아해요.
탈출 문자
print('백문이 불여일견 백견이 불여일타')
이 문장을 두 줄로 출력하고 싶을 때
print('백문이 불여일견\n백견이 불여일타')
코드에서 \n은 문자열 안에서 줄 바꿈할 때 사용하는 탈출 문자이다.
\" 와 \'
print('\'작은따옴표\'를 쓰고 싶어요.')
print("\"큰따옴표\"를 쓰고 싶어요.")
>> '작은따옴표'를 쓰고 싶어요.
>> "큰따옴표"를 쓰고 싶어요.
\\
어떤 폴더나 파일의 전체 경로를 출력할 때
print('C:\Users\Public\Pictures')
\U, \P 처럼 유효하지 않은 탈출 문자를 포함하면 오류가 난다.
이 때 역슬래시 2개를 사용해서 제대로 출력시킬 수 있다.
print('C:\\Users\\Public\\Pictures')
문자열 앞에 r을 붙이는 방법도 있다. r을 추가하면 문자열 내에 어떤 값이 있든지 무시하고 그대로 출력한다.
\r, \b, \t
\r은 커서를 맨 앞으로 이동시킴.
\b는 키보드의 백스페이스와 같은 역할을 함.
\t는 키보드의 tap과 같이 여러 칸을 띄어 쓰는 역할을 함.
print('Red Apple\rPine')
print('Redd\bApple')
print('Red \tApple')
>> PineApple
>> RedApple
>> Red Apple
실습 문제
문제 : 사이트별로 비밀번호를 생성하는 프로그램을 작성하세요.
http://naver.com
http://daum.net
http://google.com
http://youtube.com
조건
1. http:// 부분은 제외한다.
2. 처음 만나는 점(.) 이후 부분도 제외한다.
3. 남은 글자 중 처음 세 자리 + 글자 개수 + 글자 내 'e'의 개수 + '!'로 구성한다.
4. 프로그램 실행했을 때 실행결과는 다음 형태로 나와야 한다.
http://naver.com의 비밀번호는 nav51!입니다.
url = 'http://naver.com'
re_url = url[7:-4]
url_len = len(re_url)
passward = re_url[:3] + str(url_len) + str(re_url.count('e')) + '!'
print(f'{url}의 비밀번호는 {passward}입니다.')
셀프체크
문제 : 영어 문장이 주어졌을 때 첫 번째 글자는 대문자로, 나머지 글자는 모두 소문자로 변환하는 프로그램을 작성하세요.
주어진 문장 : the early bird catches the worm.
The early bird catches the worm.
주어진 문장 : Action Speak Louder Than Words.
Action speak louder than words.
주어진 문장 : PRACTICE MAKES PERFECT.
practice makes perfect.
text = 'PRACTICE MAKES PERFECT.'
text = text[0].upper() + text[1:].lower()
print(text)
'Python 기초' 카테고리의 다른 글
[Python] 제어문 정리 (0) | 2023.03.19 |
---|---|
[Python] 자료구조 정리 (0) | 2023.03.19 |
[Python] 연산자 정리 (0) | 2023.03.17 |
[Python] 자료형과 변수 (1) | 2023.03.10 |
파이썬 Class: 클래스의 모든 것 (0) | 2023.02.18 |
댓글