Python 문자열 자르기 6가지 방법

어떤 언어로 개발을 하든 간에 개발 과정에서는 필연적으로 문자열을 조작할 일이 생깁니다. 오늘은 특히 Python 문자열 자르기 6가지 방법을 알아보도록 하겠습니다.

Python 문자열 자르기 개요

Python 문자열 조작 방법 중 무엇보다도 흔하게 사용하는 문자열 자르기에 대해 알아보겠습니다. 문자열을 자르는 방식은 다양합니다. 따라서 다른 개발자가 작성한 코드도 읽을 수 있으려면 사용법을 명확히 알고 있어야겠죠? 그럼 Python 문자열 자르기 6가지 방법을 하나씩 살펴보겠습니다.

앞쪽 문자열 자르기

문자열 앞에서 숫자 5까지 잘라보겠습니다. Python 문자열 조작 방식의 특징으로 바로 대괄호를 사용해서 문자열의 범위를 지정할 수 있다는 점입니다.

txt = "123456789"
print(txt[5:])
Python

txt[5:]의 표기법은 인덱스 5번부터 취하겠다는 의미입니다. 앞에서부터 인덱스 5인 ‘6’부터 끝까지 ‘6789’를 돌려주는 것입니다. 파이썬도 C나 Javascript처럼 마찬가지로 배열 인덱스는 0부터 시작합니다.

그림 1. Python 문자열 자르기: 앞쪽 문자열 자르기
그림 1. Python 문자열 자르기: 앞쪽 문자열 자르기

뒷쪽 문자열 자르기

이번엔 반대로 12345만 구하고 싶습니다. 그러면 대괄호의 콜론(:) 뒷 자리에 배열 번호 5를 넣어주면 됩니다. 그러면 배열번호 5번인 문자 6이 되기 전까지의 문자열을 구해 줍니다.

txt = "123456789"
print(txt[:5])
Python

따라서 12345까지를 구하게 됩니다.

그림 2. Python 문자열 자르기: 뒷쪽 문자열 자르기
그림 2. Python 문자열 자르기: 뒷쪽 문자열 자르기

중간 문자열 구하기

아래 yyyy-mm-dd 형식의 문자열에서 mm만 구하려면 5번 배열 값인 0부터 7번 배열 값인 두 번째 하이픈(-) 직전인 5까지 문자열 “05”를 구하게 됩니다. 콜론(:) 왼쪽은 시작하는 index를 의미(start, begin)하며, 콜론 오른쪽은 해당 index 직전(stop, end)까지의 의미를 갖습니다.

txt = "2013-05-11"
print(txt[5:7])
Python
그림 3. Python 문자열 조작: 중간 문자열 구하기
그림 3. 중간 문자열 구하기

마지막 글자 구하기

Python에서는 마이너스 값을 사용하면 뒷쪽에서부터 세기 시작합니다. 마지막 문자는 [-1]을 통해서 구할 수 있습니다.

txt = "123456789"
print(txt[-1])
Python
그림 4. Python 문자열 조작: 문자열의 마지막 글자 구하기
그림 4. 문자열의 마지막 글자 구하기

앞에서 2자리, 뒤에서 3자리 자르기

그럼 지금까지 알아본 내용을 조합해서 앞에서 2자리 뒤에서 3자리를 자른다면 어떻게 하면 될까요?

txt = "2013-05-11"
print(txt[2:-3])
Python

앞에서 2번 배열인 2013의 1부터 시작해서, 뒤에서부터 3번째 문자인 하이픈(-) 직전까지의 문자열을 구하게 되므로 “13-05″가 됩니다.

그림 5. Python 문자열 조작: 문자열 앞과 뒤 자르기
그림 5. 문자열 앞과 뒤 자르기

빈 문자열 자르기: strip(aka. js의 trim)

Javascript에는 trim이라는 메서드가 있습니다. Python에는 문자열 객체에 strip() 이라는 메서드를 사용하면 문자열 앞 뒤의 공백 문자를 정리해 줍니다. 스페이스 문자열 ” “만 정리할 뿐 아니라 \r이나 \n과 같은 문자들도 정리해 줍니다. 특히 크롤링 등으로 문자열을 조작할 때 자주 사용하게 되는 기능입니다.

txt = "   2013-05-11  \r\n  "
print(f"\"{txt}\"")
print(f"\"{txt.strip()}\"")
Python
그림 6. Python 문자열 조작: 앞 뒤가 비어있는 문자열 자르기
그림 6. 앞 뒤가 비어있는 문자열 자르기

왼쪽 빈 문자열만 자르고 싶을 때에는 lstrip()을 사용하면 되며, 오른쪽 빈 문자열만 정리하고 싶을 때에는 rstrip()을 이용하면 됩니다.

여기까지 문자열 자르거나 원하는 문자열을 구하는 방법 6가지를 알아보았습니다.

관련 자료

Python 문서 Strings를 참고했습니다.

같이 읽으면 좋은 글

Python print 사용법 3가지(sep, end, ANSI color 출력)

Python에서 list의 항목을 줄바꿈해서 출력하고 싶으신가요? 혹시 색상을 넣어서 출력하고 싶을 때 있나요? 유용하게 사용할 수 있는 python print 방법 3가지 살펴보겠습니다.

Python print 사용법 개요

print()의 사용법을 잘 익혀두면 개발할 때 매우 편리합니다. 왜냐면 개발하면서 중간 중간 print()를 사용해서 값을 확인하는 경우가 많이 있거든요. print() 결과의 가독성을 높이고, 용도에 따라 편리하게 print()를 이용할 수 있는 방법 3가지 지금부터 살펴보겠습니다.

List나 Tuple 항목 줄바꿈 출력

print()를 이용해서 객체를 출력하다보면 문자열 객체 뿐 아니라 list나 tuple을 출력해야 할 때가 있습니다. 그냥 출력하면 너무 보기 힘들고 이해하기 어렵습니다. 이럴 때 사용하는 옵션이 sep 옵션입니다.

print(*items, sep="\n")
Python

그림 1에서 윗 부분은 그냥 print()를 이용한 것이고, 아래는 sep 옵션을 활용한 것입니다. 항목과 항목 간에 줄 바꿈 기호(\n)로 출력하게 한 것입니다. 딱 봐도 위의 방식보다는 아래의 방식이 식별하기 더 쉽죠?

그림 1. python print 사용법: sep 옵션 활용하기
그림 1. python print 사용법: sep 옵션 활용하기

줄바꿈하지 않고 print 하는 방법

줄바꿈하지 않고 한 줄에 값을 5개씩 출력하고 싶을 때가 있습니다. 그럴 때 사용하는 방법은 print문에 end 옵션을 사용하는 것입니다. end 옵션을 사용하면 출력의 끝 문자를 직접 정할 수 있습니다. 정하지 않으면 기본값(default)은 줄바꿈 기호(\n)로 처리됩니다.

for i in range(0, 15):
  print("%4d" % i, end="")
  if i % 5 == 4:
    print()
Python

위와 같은 코드를 작성하면 아래와 같은 결과를 확인할 수 있습니다.

그림 2. print에서 end 활용 예시
그림 2. print에서 end 활용 예시

줄바꿈 하지 않고 사용하는 Python print 사용법을 알아봤습니다. 이번엔 글자나 배경에 색상이나 효과를 넣어서 출력하는 방법을 알아보겠습니다.

다양한 자료를 print로 출력하다보면 확인하려는 내용이 눈에 들어오지 않을 때가 있습니다. 그럴 땐 특정 라인을 컬러로 출력하면 보다 빠르게 주요사항을 확인할 수 있습니다. 이 부분은 ANSI 코드를 통해서 설정할 수 있습니다. 색상 값과 출력결과 확인해 보겠습니다.

print("\033[93m여긴 Cyan 글자색\033[46m여긴 Cyan \033[9m배경색\033[0m여긴 ANSI 적용 취소")
Python

위와 같은 코드는 아래와 같은 결과로 출력됩니다. 어떻게 아래와 같은 출력이 되는 것인지 내용을 하나씩 살펴보겠습니다.

그림 3. ANSI 코드를 사용해서 글자 꾸미기
그림 3. ANSI 코드를 사용해서 글자 꾸미기

과거에 MS-DOS 사용하던 때에 MDir 사용해 보셨나요? MDir이 화려한 색상으로 꾸며져 있었죠? 그때 사용된 것 또한 바로 이 ANSI Code 입니다.

Escape Code: ANSI 코드 사용을 위한 호출 코드

Python에서는 8진수 표기법인 \033, Unicode 방식인 \u001b, 16진수 표기법인 \x1B 이렇게 3가지 방식을 사용할 수 있습니다.

초기화 코드(reset)

그림 3에서 보는 것과 같이 \033[0m으로 값에 0을 사용하면 지금까지 적용된 모든 효과가 초기화되어 원래대로 돌아갑니다. 만약 취소 코드를 넣지 않으면 적용된 색상이나 효과가 지속됩니다.

ANSI Code 복합 적용

그림 3의 Cyan 배경색을 적용하는 부분과 Strike 선이 추가된 부분을 보면 앞에서 설정한 글자색 노란색과 배경색이 복합적으로 적용되는 것을 확인할 수 있습니다.

ANSI 효과 및 색상표

ANSI로 줄 수 있는 효과에 대해서는 아래 그림을 통해서 확인하시기 바랍니다.

그림 4. 글자에 사용하는 효과
그림 4. 글자에 사용하는 효과
그림 5. 글자색 8가지
그림 5. 글자색 8가지
그림 6. 배경색 8가지
그림 6. 배경색 8가지
그림 7. 밝은 글자색 8가지
그림 7. 밝은 글자색 8가지
그림 8. 밝은 배경색 8가지
그림 8. 밝은 배경색 8가지

256 색상 적용

보통은 위의 ANSI 색상 정도만 활용해도 괜찮지만, 사용하고 싶은 색상이 있다면 다음과 같이 \033[38;5;<색상값>m의 형식으로 사용할 수 있습니다. 256가지의 색상 값은 그림 9를 참고하면 됩니다.

Wikipedia에 있는 256 색상표를 가져왔습니다. Standard colors와 High-intensity colors 그리고 216개의 색상과 Grayscale 색상 24개가 준비돼 있습니다.

그림 9. 256 색상표 1
그림 9. 256 색상표 1
그림 10. 256 색상표 2
그림 10. 256 색상표 2

저는 위의 그림 9에 있는 198 핫핑크 색상을 적용해 보도록 하겠습니다.

print("\033[38;5;198m핫핑크로 출력합니다.\033[0m")
Python
그림 11. 198번 색상 핫핑크로 출력하기
그림 11. 198번 색상 핫핑크로 출력하기

관련 자료

python의 print 문서를 확인하면 print() 관련 내용을 확인할 수 있습니다.
Wikipedia의 ANSI escape code 문서를 통해서도 ANSI CODE 관련 내용을 확인할 수 있습니다.

같이 읽으면 좋은 글

VULTR DNS 무료 네임서버(NS) 도메인 설정

도메인을 구매하고 사용하게 되면 필연적으로 사용해야 하는 게 바로 네임서버입니다. 네임서버를 무료로 사용할 수 있는 VULTR DNS 무료 네임서버가 있어서 소개해 드립니다.

VULTR DNS 무료 네임서버 3문 3답

제가 직접 VULTR DNS 사용해보면서 좋았던 점들이 있어서 추천해 드립니다.

질문 1. 네임서버 꼭 써야 하나요?

도메인 주소를 사용하려면 꼭! 네임서버를 사용해야 합니다. 해당 도메인이 어느 주소인지 서버들은 모르거든요. 결국엔 IP 주소를 통해서 서버에 접근하게 되므로 네임서버는 꼭 필요합니다.

질문 2. 네임서버를 꼭 VULTR를 써야 하나요?

아닙니다. 요새는 도메인 등록 대행 업체에서 네임서버를 제공하는 곳들도 있습니다. 만약 이미 등록 대행 업체에서 네임서버를 제공하고 있다면 그곳에서 이용하는 게, 더 편리할 수 있습니다. 하지만 네임서버 서비스의 종류에 따라 특정 설정이 불가능한 곳도 있으니, 그런 것들은 꼭 확인하고 사용하시기 바랍니다.

질문 3. 굳이 VULTR DNS 무료 네임서버를 써서 좋은 점은?

도메인 구매 대행 업체를 어디를 통했든, 모든 네임서버를 한 군데에서 관리할 수 있다는 점이 무엇보다 가장 편리한 점입니다. 저도 도메인을 몇 개 가지고 있는데, 등록된 업체가 다른 경우도 있지만, 한군데에서 그것도 무료로 네임서버를 설정할 수 있다는 점은 매력적입니다. 관리해야 할 곳이 여러 곳 있다면 번거롭잖아요.

도메인 무료로 등록하기

사전 준비물은 도메인 주소입니다. 여러분의 도메인 주소가 준비되었다면, VULTR 홈페이지의 Products에서 DNS 메뉴를 선택해서 들어갑니다. 아래 그림 1에는 제가 사용하는 osg.kr이 이미 등록돼 있습니다. 여러분은 새로운 도메인 주소를 추가해야 하니까 오른쪽에 파란색 + 버튼을 눌러주거나, Add Domain 버튼을 눌러줍니다.

그림 1. 무료 네임서버: VULTR DNS에 도메인 추가
그림 1. 무료 네임서버: VULTR DNS에 도메인 추가

그림 2의 Domain에 도메인 주소를 적어줍니다. 그리고 아래의 콤보박스를 눌러서 IP 주소를 입력해 줍니다. VULTR에서 사용하는 인스턴스가 있다면 해당 인스턴스의 IP를 바로 선택할 수도 있습니다. 저는 New IP Address에 사용하고자 하는 IP 주소를 입력해 줍니다. Add and Select IP Address 버튼을 눌러줍니다. 펼쳐진 창이 닫히면 Add를 눌러서 도메인을 등록해 줍니다.

그림 2. 도메인 주소와 해당 IP 주소 적어서 도메인 등록
그림 2. 도메인 주소와 해당 IP 주소 적어서 도메인 등록

도메인 정보에 네임서버 설정(도메인 대행업체 페이지)

이 부분은 도메인 등록 대행 업체의 도메인 정보 중에 네임서버 설정하는 부분이 있습니다. 그곳에 ns1.vultr.comns2.vultr.com을 추가해 주셔야 합니다.

누군가가 어떤 도메인으로 접속하려고 하면 도메인의 네임서버는 어디에 있는지 알아야 하잖아요. ns1.vultr.com을 찾아가서 IP주소를 얻어내게 되는 거죠. 그러므로 이미 도메인 업체의 네임서버 설정에 이미 설정을 해 두셨다면 상관이 없겠지만, 그렇지 않다면 꼭 네임서버를 등록해 주셔야 합니다.

하위(서브) 도메인 추가하는 방법

하위 도메인은 test.osg.kr과 같은 식으로 사용하는 것을 말하며 서브 도메인이라고도 부릅니다. 하위 도메인에 대한 네임 서버 설정을 추가하려면, 우선 DNS 페이지에서 추가할 주 도메인의 Edit Domain 버튼을 눌러줍니다.

그림 3. 서브 도메인을 추가할 도메인 네임서버 설정 편집
그림 3. 서브 도메인을 추가할 도메인 네임서버 설정 편집

아래와 같이 Manage DNS Domain 페이지로 진입하게 됩니다. 여기에서 제일 위에 Type은 A로 Name에는 하위 도메인의 이름을 적어주시면 됩니다. test를 적어주시면 test.osg.kr 도메인을 사용하게 됩니다. Data 부분에는 여러분이 해당 도메인을 사용하고자 하는 외부 IP를 적어주셔야 합니다. 꼭, 외부에서 접근 가능한 IP여야 합니다. 192.168.x.x, 10.0.x.x, 172.18.x.x 등 사설 IP를 사용하면 안됩니다.

그림 4. 하위 도메인 test 추가 예시
그림 4. 하위 도메인 test 추가 예시

설정이 끝났습니다. 이제 마음 편히 Apache나 Nginx 또는 각종 서비스에 해당 도메인에 대한 설정을 하고 이용하시면 되겠습니다.

관련 자료

VULTR 홈페이지에는 DNS 서비스에 대한 공식문서가 있습니다. 다양한 네임 서버 설정에 대한 내용은 해당 문서를 통해서 확인하시면 도움이 될 것입니다.

같이 읽으면 좋은 글