세조목

PYTHON 정리('not in', mutable&immutable(문자열 수정), 파일 읽기 & 쓰기에서의 replace)(24.01.16) 본문

데이터 분석 공부/Python

PYTHON 정리('not in', mutable&immutable(문자열 수정), 파일 읽기 & 쓰기에서의 replace)(24.01.16)

세조목 2024. 1. 16. 19:10

1. 'not in' 사용

조건문 작성 時 'not in' 을 사용할 수 있다.

아래 프로그래머스 예제에서처럼 특정 숫자가 리스트에 포함되어있는지 여부를 확인하고자할 때

not in을 쓰면 코드 작성이 간결해질 것 같았다.

https://school.programmers.co.kr/learn/courses/30/lessons/86051

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SQL에서처럼 'not in'을 사용할 수 있는지 확인해본 결과

PYTHON에서도 조건절 작성 時 'not in'을 사용할 수 있었다.

def solution(numbers):
    answer = 0
    for i in range(0,10):
        if i not in numbers:
            answer+=i
    return answer

위 코드와같이 i가 numbers라는 이름의 리스트에 들어있지 않다면 answer에 i를 더하게 된다.

 

 

2. 자료형 타입(mutable, immutable)(feat. 문자열 수정)

문자열의 특정 부분을 다른 문자로 바꾸고자할때

아래와 같은 오류 메시지가 뜰것이다.

# TypeError: 'str' object does not support item assignment

문자열은 수정할 수 없다는 말이다.

왜 그럴까?

 

이는 python문법을 이해한다면 단박에 이유를 알게된다.

 

python 자료형은 mutable 타입과 immutable타입이 있는데

리스트, 딕셔너리가 대표적인 mutable 타입이고,

튜플, 문자열이 대표적인 immutable 타입이다.

 

앞서 언급한대로 문자열은 immutable 타입이기때문에 수정이 불가능하므로

문자열의 특정 부분을 수정하고자한다면

  1. 문자열을 리스트로 변환해서 특정 부분을 수정한 후
  2. 리스트를 다시 문자열로 바꿔주면 된다.

아래 예제가 위에서 설명한 문자열 수정을 활용하는 예제다(아닐수도 있지만 나는 그렇게 풀었다).

https://school.programmers.co.kr/learn/courses/30/lessons/12948

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(phone_number):
    for i in range(len(phone_number)-4):
        phone_number = list(phone_number)
        phone_number[i] = '*'
        phone_number = ''.join(phone_number)
    return phone_number

정답 코드를 살펴보면

  1. 문자열을 list로 바꿔준 후
  2. 특정 부분을 인덱싱해서 '*'로 바꿔주었다.
  3. 그런 다음 join메소드를 사용하여 리스트를 다시 문자열로 바꿔준 것을 확인할 수 있다.

 

3. 파읽 읽고 쓰기에서의 replace 사용

python에서 파일을 읽고 쓸때 replace함수를 사용하여 특정 문자를 다른 문자로 바꿀 수 있다.

replace함수 사용에 앞서 우선 txt파일을 별도로 하나 만들어준다.

f = open('example.txt', 'w')
abb = f.write('This is example.\nKeep writing")
f.close()

이렇게 하면

This is example
Keep writing

이 적힌 example이라는 이름의 txt파일이 생성될 것이다.

 

그런다음

f = open('example.txt','r')
abb = f.read()
f.close()

코드를 통해 example.txt 파일을 읽기모드로 불러오고

 

abb = abb.replace('writing', 'reading')

를 입력해서 'writing'을 'reading'으로 수정해준다.

 

f = open('example.txt', 'w')
f.write(body)
f.close()

마지막으로 example.txt에 쓰기모드로

'writing'을 'reading'으로 수정한 변수 body를 입력해주면 된다.