[ Python ] 문자열

duck-ach·2022년 11월 6일
0

Python

목록 보기
4/6

문자열 출력

파이썬은 한줄로도 문자열을 출력이 가능하고, 여러줄을 출력할 수도 있다.

# 한줄 출력
sentence = '나는 소년입니다.'
print(sentence)
sentence2 = "파이썬은 쉬워요"
print(sentence2)

# 여러줄 출력
sentence3 = """
나는 오늘 돈까스를 먹었고,
내일은 샐러드를 먹을 생각입니다.
"""
print(sentence3)

문자열 슬라이싱(String Slicing)

문자열 중 필요한 부분만 잘라서 가져오는 것을 슬라이싱(Slicing)이라고 한다.

jumin = "990902-2234567"

print("성별 : " + jumin[7])
print("태어난 연도 : " + jumin[0:2]) # jumin[n:m] n번째부터 m번째 직전까지
print("월 : " + jumin[2:4])
print("일 : " + jumin[4:6])

print("생년월일 : " + jumin[:6]) # 처음부터 6직전까지
print("뒤 7자리 : " + jumin[7:]) # 7번째부터 끝까지 
print("뒤 7자리 (뒤에부터) : " + jumin[-7:])

문자열 처리함수

문자열 처리함수에는 아래와 같은 함수들이 있다.

  • 소문자로 출력을 해주는 lower()
  • 대문자로 출력을 해주는 upper()
  • 문자열 길이를 알려주는 len()
  • 문자열을 찾아 다른 문자로 바꿔주는 replace()
  • 등등...
python = "Python is Amazing"
print(python.lower()) # 소문자로
print(python.upper()) # 대문자로
print(python[0].isupper()) # 0번째 글자가 대문자인지 알려주는 것
print(len(python)) # 문자열 길이
print(python.replace("Python", "Java")) # Python이라는 글자를 찾아서 Java로 바꾸기

index = python.index("n")
print(index) # 앞에서부터 1번째로 오는 n을 
찾아내기
index = python.index("n", index + 1) 
print(index) # 1번째 index 이후의 n을 찾아내기

find와 index의 차이

find()는 원하는 값이 없는 경우 -1 (False 라는 뜻)을 출력하고, index()는 원하는 값이 없는 경우 오류가 난다.

python = "Python is Amazing"
print(python.find("Java")) # 원하는 값이 없는 경우 -1 (False 라는 뜻)
print(python.index("Java")) # 원하는 값이 없는 경우 오류가 난다.

문자열 속에 있는 특정 문자 갯수 세기

python = "Python is Amazing"
print(python.count("n"))

문자열 포맷

문자열을 연결할 때 +로 연결하는 방법과, ,로 연결하는 방법 2가지 방법을 공부했었다.

print("a" + "b")
print("a", "b")

그 외의 방법들을 공부해보자.

방법 1) %를 이용한 방법

%d : 십진수(Decimal)를 담을 수 있다.
%s : 문자열(String)을 담을 수 있다.
%c : 문자(Charactor)를 담을 수 있다.

print("나는 %d살입니다." % 20) # % 뒤에 있는 값을 %d 안에 넣을 수 있다. Demical(정수)타입만
print("나는 %s을 좋아해요." % "파이썬") # Stirng(문자열) 타입만
print("Apple은 %c로 시작해요." % "A") # Charactor(문자) 타입만
print("나는 %s살입니다." % 20)
print("나는 %s색과 %s색을 좋아해요." % ("파란", "빨간")) # 괄호를 통해 삽입 (순서대로 동작)

방법 2) 중괄호{}를 이용한 방법

중괄호안에 인덱스(index)를 지정해주어 순서에 영향을 받지 않을 수 있다.

print("나는 {}살입니다.".format(20))
print("나는 {}색과 {}색을 좋아해요." .format("파란", "빨간"))
print("나는 {0}색과 {1}색을 좋아해요." .format("파란", "빨강")) # 인덱스를 지정해줄 수 있다.
print("나는 {1}색과 {0}색을 좋아해요." .format("파란", "빨강")) # 인덱스를 지정해줄 수 있다.

방법 3) 변수처럼 사용

변수명을 이용한 방법이기 때문에 순서에 상관이 없다.

print("나는 {age}살이며, {color}색을 좋아해요." .format(age = 20, color="빨간"))
print("나는 {age}살이며, {color}색을 좋아해요." .format(color="빨간", age = 20))

방법 4) 변수를 한번에 할당(v3.6이상~)

f를 먼저 쓰고 중괄호를 이용해 변수명을 할당하면, 따로 .format()에 담지 않고도 변수에 담겨있던 값을 가져와서 할당할 수 있다.

age = 20 # 변수를 선언하고,
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")

Excape 문자

Excape문자를 이용하면, 출력이 되지않는 " 큰 따옴표나, \ 역슬래시 등을 출력할 수 있다.

# \n : 줄바꿈
print("백문이 불여일견 \n 백견이 불여일타")

# \" \' : 문장 내에서 따옴표
# 저는 "오리" 입니다.
print("저는 '오리' 입니다.")
print("저는 \"오리\" 입니다.")
print("저는 \'오리\' 입니다.")

# \\ : 문장내에서 \
# 경로를 출력하고 싶다면
# print("c:\\python_basic\\string.py")

# \r : 커서를 맨 앞으로 이동
print("Red Apple\rPine") # 커서를 맨 앞으로 이동해서 "Red "를 "Pine"으로 대체

# \b : 백스페이스(한 글자 삭제)
print("Redd\bApple")

# \t : 탭
print("Red\tApple")

예제) 사이트별 비밀번호 생성해주기

사이트예시) http://naver.com
    규칙1 : http://부분은 제외 => naver.com
    규칙2 : 처음 만나는 점(.) 이후 부분은 제외 => naver
    규칙3 : 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 'e' 갯수 + "!"로 구성
                    (nav)               (5)             (1)           (!)
    예) 생성된 비밀번호 : nav51!

풀이

site = "http://naver.com"
pwd1 = site[7:10] # nav
spot = site.index(".") # 12
pwd2 = str(len(site[7:spot])) # 5
pwd3 = site.count("e") # 1
password = (pwd1 + str(pwd2) + str(pwd3) + "!")
print(password)

처음에 숫자들을 str()으로 감싸 문자열타입으로 바꾸어주지않아서 이상한 오류들이 떠서 조금 걸렸지만, 처음부터 하나씩 실행시켜주다 보니 해결되었다 흐흐..

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글