Notice
Recent Posts
Recent Comments
Link
관리 메뉴

왕초보 코딩 개발 일지 블로그

03. 파이썬 문자열 (021~030) 본문

Python 공부/파이썬 300제 풀이 연습

03. 파이썬 문자열 (021~030)

아캔두우잇 2023. 4. 6. 17:55
반응형

 

출처 : 021 ~ 030 - 초보자를 위한 파이썬 300제 (wikidocs.net)

 

021 ~ 030

.answer {margin-top: 10px;margin-bottom: 50px;padding-top: 10px;border-top: 3px solid LightGray;bo…

wikidocs.net

021 문자열 인덱싱

letters가 바인딩하는 문자열에서 첫번째와 세번째 문자를 출력하세요.

>> letters = 'python'
실행 예
p t
letters = 'python'
print(letters[0],letters[2])
p t

022 문자열 슬라이싱

자동차 번호가 다음과 같을 때 뒤에 4자리만 출력하세요.

>> license_plate = "24가 2210"
실행 예: 2210
license_plate = "24가 2210"
print(license_plate[-4:])
2210

* 문자열에서 여러 글자를 가져오는 것을 슬라이싱이라고 부릅니다.

음수 값은 문자열의 뒤에서부터 인덱싱 또는 슬라이싱함을 의미합니다.

슬라이싱에서 시작 인덱스를 생락혀면 0으로 간주하고, 끝 인덱스를 생략하면 문자열의 끝을 의미합니다.

023 문자열 인덱싱

아래의 문자열에서 '홀' 만 출력하세요.

>> string = "홀짝홀짝홀짝"
실행 예:
홀홀홀
string = "홀짝홀짝홀짝"
print(string[::2])
홀홀홀

* 슬라이싱할 때, '시작인덱스 : 끝인덱스 : 오프셋' 을 지정할 수 있다.

 

* 오프셋(offset)이란?

컴퓨터 과학에서 배열이나 자료 구조 오브젝트 내의 오프셋(offset)은 일반적으로 동일 오브젝트 안에서 오브젝트 처음부터 주어진 요소나 지점까지의 변위차를 나타내는 정수형이다.

 

오프셋이 -1 이면 끝 인덱스부터 역순으로 읽는다. 

string = "홀짝홀짝홀짝"
print(string[::-2])
짝짝짝

024 문자열 슬라이싱

문자열을 거꾸로 뒤집어 출력하세요. 

>> string = "PYTHON"
실행 예:
NOHTYP
string = "PYTHON"
print(string[::-1])
NOHTYP

* 오프셋이 -1 이면 끝 인덱스부터 역순으로 읽는다. 

025 문자열 치환

아래의 전화번호에서 하이푼 ('-')을 제거하고 출력하세요.

>> phone_number = "010-1111-2222"
실행 예
010 1111 2222
phone_number = "010-1111-2222"
phone_number1 = phone_number.replace("-", " ")
print(phone_number1)
010 1111 2222

* 파이썬 문자열에서 replace 메서드를 사용하면 문자열을 일부를 치환할 수 있습니다.

문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문에(immutable)

기존 문자열은 그대로 두고 치환된 새로운 문자열을 리턴해야 합니다.

변수명 = 변수명.replace(바뀌게 될 문자열, 바꿀 문자열) 형태로 문자열 안의 특정한 값을 다른 값으로 치환해 준다.

 

문자열은 변경할 수 없는 자료형이기 때문에, replace 매서드를 사용할 때 반드시 변수명 = 변수명.replace(~) 형태로 코드를 입력한다.

026 문자열 다루기

25번 문제의 전화번호를 아래와 같이 모두 붙여 출력하세요.

실행 예
01011112222
phone_number = "010-1111-2222"
phone_number1 = phone_number.replace("-", "")
print(phone_number1)
01011112222

* "-" 대신 "" < 공백 없게 치환하기

027 문자열 다루기

url 에 저장된 웹 페이지 주소에서 도메인을 출력하세요.

>> url = "http://sharebook.kr"
실행 예:
kr
url = "http://sharebook.kr"
url_split = url.split('.')
print(url_split[-1])

* 문자열로 표현된 url에서 `.`을 기준으로 분리합니다.

분리된 url 중 마지막을 인덱싱하면 도메인만 출력할 수 있습니다.

url = "http://sharebook.kr"
url_split = url.split('.')
print(url_split[-2])

분리된 url 중 print(url_split[-2])을 입력하여 인덱싱하면 앞쪽을 출력할 수 있습니다.

 

<다른 예제>

a = "Life is too short"
a.split()
# ['Life', 'is', 'too', 'short'] ← 리스트

b = "a:b:c:d"
b.split(':')
# ['a', 'b', 'c', 'd'] ← 리스트
  • split 함수는 a.split()처럼 괄호 안에 아무 값도 넣어 주지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 준다. 
  • 만약 b.split(':')처럼 괄호 안에 특정 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다.
  • 이렇게 나눈 값은 리스트에 하나씩 들어가게 된다. ['Life', 'is', 'too', 'short']['a', 'b', 'c', 'd']가 리스트이다.

028 문자열은 immutable

아래 코드의 실행 결과를 예상해보세요.

>> lang = 'python'
>> lang[0] = 'P'
>> print(lang)

문자열은 수정할 수 없습니다.

실행 결과를 확인해보면 문자열이 할당(assignment) 메서드를 지원하지 않음을 알 수 있습니다.

TypeError                                 Traceback (most recent call last)
<ipython-input-22-a0f3d05b669c> in <module>
      1 lang = "python"
----> 2 lang[0]= "P"
      3 print(lang)

TypeError: 'str' object does not support item assignment

029 replace 메서드

아래 문자열에서 소문자 'a'를 대문자 'A'로 변경하세요.

>> string = 'abcdfe2a354a32a'
실행 예:
Abcdfe2A354A32A

변수명.replace(바뀌게 될 문자열, 바꿀 문자열)처럼 사용해서 문자열 안의 특정한 값을 다른 값으로 치환해 준다.

string = 'abcdfe2a354a32a'
string = string.replace('a', 'A')
print(string)

 

Abcdfe2A354A32A

030 replace 메서드

아래 코드의 실행 결과를 예상해보세요.

>> string = 'abcd'
>> string.replace('b', 'B')
>> print(string)

`abcd`가 그대로 출력됩니다.

왜냐하면 문자열은 변경할 수 없는 자료형이기 때문입니다.

replace 메서드를 사용하면 원본은 그대로 둔채로 변경된 새로운 문자열 객체를 리턴해줍니다.

 

문자열은 변경할 수 없는 자료형이기 때문에, replace 매서드를 사용할 때 반드시 변수명 = 변수명.replace(~) 형태로 코드를 입력한다.

반응형