본문 바로가기

coding/Python

[Python] 파이썬 문법 공부하기(3) : 문자열, 문자열 포맷, 탈출 문자, 문자열 슬라이싱, 문자열 처리 함수

1. 학습 목표

파이썬 기초 문법 공부하기

 

2. 학습 내용

1. 문자열

print('맥주 먹는 중')
print("곰표 맥주 존맛탱")
print("""
여러분은 맥주 좋아하시나요?
저는 어릴 때는 이걸 왜 먹지 했었는데요,
지금은 아주 좋아합니다. ^^""")
print('''진짜
끝
!''')

문자열은 위와 같이 작은 따옴표와 큰 따옴표 상관 없이 사용할 수 있다.

그리고 다른 언어에서는, 문자열 끝에 \n을 입력해줘야 줄이 바뀌는 경우가 많지만

파이썬은 자동 줄바꿈이다. 이것도 참 편하다

그리고 큰따옴표나 작은따옴표 세 개를 사용하면 한 문자열 내에서 \n 사용 없이 줄바꿈할 수 있다.

결과는 이렇다. 두번째 줄과 세번째 줄 사이에 공백이 생긴 건

내가 큰 따옴표 세 개 사용해줄 때 다음줄로 엔터를 한 것 때문 :D

따옴표 세 개 사용은 나도 잊고 있었는데 써먹어야겠다. ㅋㅋ

 

2. 문자열 포맷

문자열 포맷이란, 문자열 출력할 때 상황에 따라 적절한 값을 대입하게 해주는 방법이라고 볼 수 있겠다.

예를 들어, 구구단을 화면에 출력하고 싶다고 할 때 1단부터 9단까지 하나하나 직접 적으면

손이 정말 아플 것이다. ㅠ_ㅠ 그런데 이때 문자열 포맷과 반복문을 사용한다면? 쏘 EZ

진짜 여러가지 방법이 있고, 사용 방법과 결과는 다음과 같다.

# 방법 1
print("name : " + "연어\n")

# 방법 2
print("name : ", "연어\n")

# 방법 3
print("age  : %d" % 24)
print("name : %s" % "연어")
print("Apple은 %c로 시작해요." % "A")
print("Apple은 %s로 시작해요." % "A")
print("%s는 %s을 좋아해요.\n" % ("박연어", "연어덮밥"))

# 방법 4
print("age  : {}".format(24))
print("name : {}".format("연어"))
print("{}는 {}을 좋아해요.".format("박연어", "연어덮밥"))
print("{1}는 {0}을 좋아해요.\n".format("연어덮밥", "박연어"))

# 방법 5
print("""age : {age}
name : {name}
""".format(name="박연어",age=24)) # name과 age는 이 문장 내에서만 쓰임

# 방법 6 (3.6 이상)
age = 24
name = "박연어"
print(f"""age : {age}
name : {name}""") # 실제 변수를 갖다 씀

주목할 점은, c언어와 달리 문자를 큰 따옴표로 감싸도 된다는 것! :D

나는 이중에 개인적으로 1번이나 4번 방법을 선호하는 편이다.

이때 1번 방법의 경우에 주의할 것은

print("age : " + str(24)) # O
print("age : " + 24) # X

이렇게 숫자형 자료형에 str() 함수를 사용해서 문자열화 해준 후 사용해야 한다는 것이다.

반면 2번은, str() 함수 없이도 사용할 수 있지만, 띄어쓰기가 하나 포함되기 때문에 나는 불편해서 안 쓴다.

 

3. 탈출 문자

# \n : 줄바꿈
print("맥주는?\n곰표!")

# \", \' : 문장 내에서 큰 따옴표, 작은 따옴표
print('나는야 "박연어".')
print('나는야 \'박연어\'.')
print("나는야 '박연어'.")
print("나는야 \'박연어\'.")

# \\ : 문장 내에서 \
print("C:\Python39\python.exe") # 오류 난다는데 왜이리 잘 돼..?
print("C:\\Python39\python.exe")

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

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

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

탈출 문자는 위와 같은 것들이 있다. 자주 쓰이는 건 \n이나 \\?

이때 문장 내에서 \ 하나만 쓰면 출력이 안 된다고 하는데.. 난 잘만 된다.

버전 업글 되면서 수정됐을 수도 있고, ... 모르겠다.

 

4. 문자열 슬라이싱

문자열 슬라이싱은, 문자열에서 원하는 부분만 끄집어내는 방법이다.

이때 문자열의 맨 앞 부분을 0으로, 오른쪽으로 갈수록 +1 왼쪽으로 갈수록 -1이다.

그리고 여러개를 끄집어낼 때..^^ 후 진짜ㅋㅋ 언어마다 다 달라서 헷갈리는데

파이썬의 경우 [n:m]이라고 하면 n 이상, m 미만인 자리를 말한다.

예를 들어 [0:3]이면 [0, 1, 2]를 의미한다. :D

# 슬라이싱
jumin = "991231-1234567"
print("성별 : " + jumin[7]) # 1
print("연   : " + jumin[0:2]) # 0부터 2 직전까지 (0, 1)
print("월   : " + jumin[2:4])
print("일   : " + jumin[4:6])
print("생년월일 : " + jumin[:6]) # 처음부터 6 직전까지
print("뒤 7자리 : " + jumin[7:]) # 7부터 끝까지
print(jumin[-1]) # -1 : 맨 끝자리
print("뒤 7자리 (뒤에서부터) : " + jumin[-7:]) # 뒤에서 7번째 부터 끝까지

 

5. 문자열 처리 함수

# 문자열 처리 함수
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로 바꿔서 출력, 문자열에는 변화 x

index = python.index("n") # python이라는 변수에서 n이 몇 번째 위치에 존재?
print(index)

index = python.index("n", index + 1) # 6번째 위치부터 찾았을 때 n이 나오는 위치
print(index)

# print(python.index("java")) ---> 없는 것을 찾았을 때 에러뜸!

print(python.find("n"))
print(python.find("java")) # 내가 원하는 변수가 없을 때 -1 반환

print(python.count("n")) # python이라는 변수에서 n이 몇 번 등장?

이 함수들도 진~짜 안 쓰이는 애들 중 하나이다. (내가 안 쓰인다고 하는 건, 오로지 나의 기준!)

그래도 len()함수는 많이 쓰이는데, 사실 문자열보다는 다른 자료형에서 많이 사용했었다.

 

3. 참고

나도코딩님의 파이썬 코딩 무료 강의 (기본편)


- 개발자 아니고, 전자공학도가 적다 보니 완벽한 설명은 아닐 수 있습니다.

- 잘못된 설명이 있을 경우, 댓글로 말씀해 주시면 감사하겠습니다.