본문 바로가기

PYTHON/초보자를 위한 파이썬 300제

03. 파이썬 문자열 021 ~ 030

문자열을 다루는 문법을 다 까묵었다,,,

못 푼 문제가 꽤 있었으므로 기초적인 거니까 다 외워서 알아두기~!

 

https://wikidocs.net/7022

 

021 ~ 030

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

wikidocs.net

 

# 2024 02 16 FRI
# 021
# letters 가 바인딩하는 문자열에서 첫번째와 세번째 문자를 출력
letters = 'python'
print(letters[0], letters[2])

# 022
# 자동차 번호 뒤 4자리만 출력
license_plate = "24가 2210"
print(license_plate[4:8])
print(license_plate[-4:])

# 023
# "홀짝홀짝홀짝" 문자열에서 '홀'만 출력
string1 = "홀짝홀짝홀짝"
print(string1[0], string1[2], string1[4])
print(string1[::2])

# 024
# 문자열을 거꾸로 뒤집어 출력
string2 = "PYTHON"
print(string2[::-1])

# 025
# 전화번호에서 하이푼("-")을 제거하고 출력
phone_num1 = "010-1111-2222"
phone_num2 = phone_num1.replace("-", " ")
print(phone_num2)

# 026
# 25번 문제의 전화번호를 공백 없이 모두 붙여 출력
phone_num3 = phone_num1.replace("-", "")
print(phone_num3)

# 027
# url에 저장된 웹 페이지 주소에서  도메인 출력
url = "http://sharebook.kr"
url_split = url.split('.')
print(url_split[-1])

# 028
# 코드 실행 결과 예상
lang = "python"
# lang[0] = 'P'
print(lang)
# error

# 029
# 문자열 'a'를 'A'로 변경
string3 = 'abcdfe2a354a32a'
print(string3.replace('a', 'A'))

# 030
# 코드 실행 결과 예상
string4 = 'abcd'
string4.replace('b', 'B')
print(string4)
# aBcd(x) abcd 출력됨

 

021 ~ 030 출력 결과

 

내가 몰랐던 문법

 

1. 인덱싱

파이썬 문자열에서 '한글자'를 가져오는 것, 파이썬 인덱싱은 0부터 시작한다.

 

2. 슬라이싱

파이썬 문자열에서 '여러글자'를 가져오는 것, 인덱싱이나 슬라이싱 할 때 음수값을 사용하면 뒤에서부터 시작한다는 의미이다. 슬라이싱에서 시작 인덱스를 생략하면 0으로 간주, 끝 인덱스를 생략하면 문자열의 끝을 의미 

 

3. 반복되는 원하는 위치의 글자 출력

string = "홀짝홀짝홀짝"

print(string[::2]) 

슬라이싱할 때 '시작인덱스:끝인덱스:오프셋' 을 지정할 수 있다. 여기서 사용된 [ : : 2 ] 는 슬라이싱 구문이다. : : 의 의미는 시작과 끝 인덱스가 생략되었으므로 처음부터 끝까지 전체 문자열을 선택하고, 마지막 2는 오프셋을 나타낸다. 여기서 오프셋은 스텝을 나타내는 오프셋이다. 스텝이 2이므로 문자열에서 한 문자씩 건너뛰면서 선택한다.

 

4. 거꾸로 출력 

슬라이싱을 사용해서 문자열을 거꾸로 출력할 수 있다. 아까와 같이 '시작인덱스 : 끝인덱스 : 오프셋'을 지정해주면된다. [ : : -1 ] 이렇게 지정하면 : : 시작부터 끝까지 문자열을 선택한 후 마지막 인덱스부터 거꾸로 출력한다. 응용하여 [ : : -2 ] 이렇게 지정하면 거꾸로 출력하되, 한 번에 두 칸씩 건너뛰면서 문자를 출력한다. 

 

5-1. replace

'replace()' 메서드는 문자열에서 지정된 부분 문자열을 다른 부분 문자열로 대체하는 데 사용된다. 

new_string = original_string.replace(old, new)

  • original_string: 원래의 문자열
  • old: 대체하고자 하는 부분 문자열
  • new: old 부분 문자열을 대체할 새로운 부분 문자열
  • new_string: 대체가 완료된 새로운 문자열

원본 문자열을 변경하지 않고 새로운 문자열을 반환하는 것이다. 문자열의 일부를 치환할 수 있으나 파이썬에서 문자열은 수정할 수 없는 자료형이므로 기존 문자열은 그대로 있고 치환된 새로운 문자열이 리턴되는 것이다. 

 

30번 문제에서 따라서 replace() 메서드를 사용했을 지라도 새로운 변수에 지정을 해준 게 아니기 때문에 string을 출력하면 그대로 abcd를 출력한다. replace 메서드를 사용하면 원본은 그대로 둔 채로 새로운 문자열 객체를 리턴해주는 것이다. 

5-2. 메서드

메서드는 객체 지향 프로그래밍에서 특정 객체에 속하는 함수를 말한다. 메서드는 해당 객체의 상태를 변경하거나 객체에 특정한 작업을 수행한다. 메서드는 객체에 의해 호출되며, 해당 객체의 속성에 대한 접근을 제공하거나 해당 객체의 상태를 조작하는 기능을 제공한다. 

  1. 객체에 속함: 메서드는 특정 클래스의 인스턴스(객체)에 속합니다. 즉, 클래스로부터 생성된 객체에 대해 사용됩니다.
  2. 객체의 상태를 변경하거나 특정 작업을 수행함: 메서드는 해당 객체의 상태를 변경하거나 특정 작업을 수행합니다. 이를 통해 객체의 동작을 제어하고 객체의 상태를 조작할 수 있습니다.
  3. 객체의 속성에 접근 및 조작: 메서드는 해당 객체의 속성에 접근하고 값을 변경할 수 있습니다. 이를 통해 객체의 데이터를 관리하고 객체의 동작을 제어할 수 있습니다.
  4. 객체에 의해 호출됨: 메서드는 특정 객체에 의해 호출되며, 해당 객체의 상태와 속성에 접근하여 작업을 수행합니다.
  5. 캡슐화와 정보 은닉: 객체 지향 프로그래밍에서 메서드는 클래스의 멤버로써 캡슐화를 지원하고, 정보 은닉을 통해 객체의 내부 상태를 보호합니다. 메서드를 통해 객체의 내부 동작을 숨기고 외부에서 접근할 수 있는 인터페이스를 제공함으로써 객체의 안정성과 보안을 유지할 수 있습니다.

5-3. 객체

객체는 데이터와 해당 데이터를 조작하는 메서드(함수)를 함께 초함하는 개념적인 개체이다. 파이썬은 객체 지향 프로그래밍 언어이며, 모든 것이 객체로 구성된다. 정수, 실수, 문자열, 리스트, 튜플 등 내장 데이터 타입부터 사용자가 직접 정의한 클래스 객체까지 모두 객체로 간주된다. 

 

6. split

split() 메서드는 문자열을 지정된 구분자(separator)를 기준으로 분할하여 리스트로 반환한다. 이 메서드는 매우 유용하게 사용되며, 주로 텍스트 데이터를 처리하고 파싱하는 데 사용된다. 

split의 기본 구문

string.split(separator, maxsplit)

  • string: 분할할 대상 문자열
  • separator (선택사항): 문자열을 분할할 구분자, 이 구분자를 기준으로 문자열이 나누어진다. 기본값은 공백 문자(스페이스, 탭, 개행 등)
  • maxsplit (선택사항): 분할할 최대 횟수를 지정한다. 이 값을 설정하면 분할이 지정된 횟수만큼만 이루어집니다. 기본값은 -1로, 모든 분할이 수행된다.

27번 문제는 url에서 도메인을 추출해 출력하는 것을 보여준다. url은 일반적으로 도메인.확장자의 형식을 가지면 이를 점(.)을 기준으로 분할하여 리스트로 저장한다. 그런 다음 리스트의 마지막 요소를 출력하여 도메인을 얻는다. 즉 split은 구분자를 기준으로 나누어서 리스트에 저장하는 과정이고 출력할 때는 전체 리스트가 출력되는 것이 기본값이고 내가 원하는 값만을 출력하려면 리스트에서 인덱싱을 해야한다. 그래서 27번에서 print(url_split[-1])을 작성한 것이다. -1의 의미는 파이썬에서 인덱스로 사용되는 음수 값을 의미하고, 리스트나 문자열에서 -1은 마지막 요소를 가리킨다. 즉 url_split[-1]은 url_split의 마지막 요소(가장 오른쪽에 있는 부분)를 의미한다. 따라서 kr만 출력되는 것이다. 

 

7. 문자열 immutable

파이썬 문자열은 변경할 수 없는(immutable) 데이터 타입이다. 이는 문자열이 생성된 후에는 그 내용을 변경할 수 없음을 의미한다. 문자열을 변경하려면 새로운 문자열을 생성해야 한다. 28번의 실행결과를 확인해보면 문자열이 할당(assignment) 메서드를 지원하지 않음을 알 수 있다. 즉 에러가 발생한다.