✔︎ 여러 줄인 문자열을 변수에 대입할 때
Life is too short
You need python
1. 이스케이프 코드 '\n' 사용
multiline = "Life is too short\n You need python"
2. 연속된 작은따옴표 3개(''') 또는 큰따옴표 3개(""") 사용
multiline = '''
Life is too short
You need python
'''
multiline = """
Life is too short
You need python
"""
✔︎ 이스케이프 코드
코드 | 설명 |
\n | 문자열 안에서 줄을 바꿀 때 사용(개행) |
\t | 문자열 사이에 탭 간격을 줄 때 사용 |
\\ | 문자 \를 그대로 표현할 때 사용 |
\' | 작은따옴표(')를 그대로 표현할 때 사용 |
\" | 큰따옴표(")를 그대로 표현할 때 사용 |
✔︎ 문자열 슬라이싱
Pithon이라는 문자열을 Python으로 바꾸려면?
a = "Pithon"
a[1] = 'y'
⇒ Error 발생. 문자열 자료형은 immutable한 자료형 즉, 그 요솟값을 변경할 수 없기 때문.
a = "Pithon"
a[:1] + 'y' + a[2:]
문자열 슬라이싱으로 요솟값 변경 가능.
✔︎ 문자열 포매팅
1. 문자열 포맷 코드
코드 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(Character) |
%d | 정수(Integer) |
%f | 부동 소수(Floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal %(문자 '%' 자체) |
**포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다
"Error is %d%." % 98
⇒ Value Error
"Error is %d%%." % 98
Error is 98%.
2. 포맷 코드와 숫자 함께 사용하기
분류 | 코드 | 결과 | 설명 |
정렬과 공백 | "%10s" % "hi" | ' hi' | %10s : 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽 정렬하고 그 앞의 나머지는 공백 |
"%-10sjane" % "hi" | 'hi jane' | %-10s : 왼쪽 정렬 | |
소수점 표현하기 | "%0.4f" % 3.42134234 | '3.4213' | %0.4f : 소수점 네 번째 자리까지 나타냄 |
"%10.4f" % 3.42134234 | ' 3.4213' | %10.4f : 소수점 네 번째 자리까지만 표시하고 전체 길이가 10개인 문자열 공간에서 오른쪽 정렬 |
3. format 함수를 사용한 포매팅
구분 | 코드 | 결과 |
숫자 바로 대입하기 | "I eat {0} apples".format(3) | 'I eat 3 apples' |
문자열 바로 대입하기 | "I eat {0} apples".format("five") | 'I eat five apples' |
숫자 값을 가진 변수로 대입하기 | number = 3 "I eat {0} apples".format(number) |
'I eat 3 apples' |
2개 이상의 값 넣기 | number = 10 day = "three" "I ate {0} apples, so I was sick for {1} days.".format(number, day) |
'I ate 10 apples, so I was sick for three days.' |
이름으로 넣기 | "I ate {number} apples, so I was sick for {day} days.".format(number=10, day=3) | 'I ate 10 apples, so I was sick for 3 days.' |
인덱스와 이름을 혼용해서 넣기 | "I ate {0} apples, so I was sick for {day} days.".format(10, day=3) | 'I ate 10 apples, so I was sick for 3 days.' |
왼쪽 정렬 | "{0:<10}".format("hi") | 'hi ' |
오른쪽 정렬 | "{0:>10}".format("hi") | ' hi' |
가운데 정렬 | "{0:^10}".format("hi") | ' hi ' |
공백 채우기 | "{0:=^10}".format("hi") | '====hi====' |
"{0:!<10}".format("hi") | 'hi!!!!!!!!' | |
소수점 표현하기 | y = 3.42134234 "{0:0.4f}".format(y) |
'3.421' |
{ 또는 } 문자 표현하기 | "{{ and }}".format() | '{ and }' |
4. f 문자열 포매팅 (파이썬 3.6 버전부터 가능)
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
딕셔너리
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
정렬
>>> f'{"hi":<10} #왼쪽 정렬
'hi '
>>> f'{"hi":>10} #오른쪽 정렬
' hi'
>>> f'{"hi":^10} #가운데 정렬
' hi '
공백 채우기
>>> f'{"hi":=^10}'
'====hi===='
>>> f'{"hi":!<10}'
'!!!!hi!!!!'
소수점
>>> y = 3.42134124
>>> f'{y:0.4f}'
'3.4213'
>>> f'{y:10.4f}' #소수점 4자리 표현, 총 자릿수를 10으로 맞춤
' 3.4213'
{} 문자 표시: 다음과 같이 두 개를 동시에 사용해야 한다.
>>> f'{{ and }}'
'{ and }'
✔︎ 문자열 관련 함수
설명 | 코드 | 결과 |
문자열 길이 구하기(len) | a = "Life is too short" len(a) |
17 |
문자 개수 세기(count) | a = "hobby" a.count('b') |
2 |
위치 알려주기(find) | a = "Python is the best choice" a.find('b') |
14 |
a = "Python is the best choice" a.find('k') |
-1 (찾는 문자나 문자열이 존재하지 않는다면 -1을 반환) |
|
위치 알려주기(index) |
a = "Life is too short" a.index('t') |
8 |
a = "Life is too short" a.index('k') |
ValueError 발생 (find 함수와 달리 문자열 안에 존재하지 않는 문자를 찾으면 오류 발생) |
|
문자열 삽입(join) | ",".join('abcd') | 'a,b,c,d' |
↳ 리스트, 튜플도 입력으로 사용 가능 | ",".join(['a', 'b', 'c', 'd']) | 'a,b,c,d' |
소문자를 대문자로 바꾸기(upper) | a = "hi" a.upper() |
'HI' |
대문자를 소문자로 바꾸기(lower) | a = "HI" a.lower() |
'hi' |
문자의 소문자 여부 판별(islower) |
>>> user = input() >>> print(user.islower()) A |
False (소문자면 True, 대문자면 False 반환) |
capitalize | a = "hello" a.capitalize() |
'Hello' |
왼쪽 공백 지우기(lstrip) | a = " hi" a.lstrip() |
'hi' |
오른쪽 공백 지우기(rstrip) | a = "hi " a.lstrip() |
'hi' |
양쪽 공백 지우기(strip) | a = " hi " a.strip() |
'hi' |
문자열 바꾸기(replace) | a = "Life is too short" a.replace("Life", "Your leg") |
'Your leg is too short' |
문자열 나누기(split) |
a = "Life is too short" a.split() |
['Life', 'is', 'too', 'short'] (공백을 기준으로 문자열 나눔) |
b = "a:b:c:d" b.split(':') |
['a', 'b', 'c', 'd'] (: 기호를 기준으로 문자열 나눔) |
|
endswith |
file_name = "보고서.xlsx" file_name.endswith("xlsx") | True |
file_name = "보고서.xlsx" file_name.endswith(("xlsx", "xls")) |
True | |
startswith | file_name = "2020_보고서.xlsx" file_name.startswith("2020") | True |
Q1 문자열 바꾸기
다음과 같은 문자열이 있다.
a:b:c:d
문자열의 split와 join 함수를 사용하여 위 문자열을 다음과 같이 고치시오.
a#b#c#d
정답 ↓
a = "a:b:c:d"
b = a.split(':')
print('#'.join(b))
예제. 아래의 문자열에서 '홀' 만 출력하세요.
string = "홀짝홀짝홀짝"
실행 예: 홀홀홀
정답 ↓
string = "홀짝홀짝홀짝"
print(string[::2]) #[begin:end:step]
예제. 문자열을 거꾸로 뒤집어 출력하세요.
string = "PYTHON"
실행 예:
NOHTYP
정답 ↓
string = "PYTHON"
print(string[::-1])
예제. url 에 저장된 웹 페이지 주소에서 도메인을 출력하세요.
url = "http://sharebook.kr"
실행 예:
kr
정답 ↓
예제. replace 메서드
아래 문자열에서 소문자 'a'를 대문자 'A'로 변경하세요.
>>> string = 'abcdfe2a354a32a'
>>> string = string.replace('a', 'A')
>>> print(string)
Abcdfe2A354A32A
아래 코드의 실행 결과를 예상해보세요.
>> string = 'abcd'
>> string.replace('b', 'B')
>> print(string)
abcd
정답 ↓

abcd가 그대로 출력된다.
replace 메서드를 사용하면 원본은 그대로 둔채로 변경된 새로운 문자열 객체를 리턴해준다.
예제. 휴대폰 번호 앞자리에 따라 통신사는 아래와 같이 구분된다. 사용자로부터 휴대전화 번호를 입력 받고, 통신사를 출력하는 프로그램을 작성하라.
번호 | 통신사 |
011 | SKT |
016 | KT |
019 | LGU |
010 | 알 수 없음 |
>> 휴대전화 번호 입력: 011-345-1922
당신은 SKT 사용자입니다.
정답 ↓
number = input("휴대전화 번호 입력: ")
num = number.split("-")[0]
if num == "011":
com = "SKT"
elif num == "016":
com = "KT"
elif num == "019":
com = "LGU"
else:
com = "알수없음"
print(f"당신은 {com} 사용자입니다.")
'◦ Algorithm > Python' 카테고리의 다른 글
[점프투파이썬] 클래스 (0) | 2021.01.30 |
---|---|
[점프투파이썬] 함수, 사용자 입출력 (0) | 2021.01.29 |
[점프투파이썬] 집합, 불, 변수 (0) | 2021.01.28 |
[점프투파이썬] 리스트, 튜플, 딕셔너리 (0) | 2021.01.26 |
[점프투파이썬] 제어문 (0) | 2021.01.25 |