파이썬 문자열 - 연산, 인덱싱, 슬라이싱, 포매팅 공부

1. 문자열 만들기

문자열을 만드는 방법으로 4가지가 있다.

  • 1. 큰 따옴표 1개

  • 2. 작은 따옴표 1개

  • 3. 큰 따옴표 3개

  • 4. 작은 따옴표 3개

print("[문자열 만드는 4가지 방법]") 
print("1. happy day") 
print('2. happy day') 
print("""3. happy day""") 
print('''4. happy day''')

 

2. 이스케이프 문자

문자열 안에서 특수한 기능을 가지는 문자들이다. 역슬래시 기호(\)로 시작한다.

\n : 개행(줄바꿈) 
\t : tab키를 누른 만큼 간격 띄우기 
\\ : \ 하나를 문자로 사용 
\' : ' 하나를 문자로 사용 
\" : " 하나를 문자로 사용

 

3. 문자열 연산

 

  • + : 문자열을 연결한다.

  • * : 문자열을 반복한다.

print("안녕" + "하세요")

print("안녕" * 5)

 

4. 문자열 인덱싱

문자열에서 특정 순서(인덱스)의 글자를 뽑아낼 때 [ ](대괄호)를 사용한다.

exStr = "안녕하세요."

print(esStr[0], esStr[-1])

 

5. 문자열 슬라이싱

문자열의 인덱스로 특정 범위의 문자를 조각내서 사용할 때 이용한다.

a[0:3] --> 콜론(:)으로 범위 지정 
a[시작인덱스:끝인덱스] --> 끝인덱스는 포함 X 
a[시작인덱스:] --> '시작인덱스'부터 '끝'까지 
a[:끝인덱스] --> '처음'부터 '끝인덱스'까지 (끝인덱스는 포함 X) 
a[:] --> 시작부터 끝 --> 전체

문자열 슬라이싱에서 인덱스를 범위를 초과해도 오류가 나지 않는다. 그리고 만약 문자열 중 첫 글자를 바꾸고 싶다면 이미 만들어진 문자열은 수정이 불가능해서 mystr[0] = 'w' 같이 사용할 수 없다. 따라서 이미 만들어진 문자열은 변경이 불가능해 새로 만들어야 한다.

참고로 인덱싱과 슬라이싱은 문자열뿐 아니라, 하나의 자료가 여러 개의 값으로 이루어진 경우 모두 사용 가능하다.

여기서 문자열이란, 문자 하나하나가 나열된 자료이기에 인덱싱과 슬라이싱이 가능하다.

 

 

6. 문자열 포매팅

 

6-1. 포매팅 서식 문자를 이용한 방법

문자열 안에 값을 삽입하는 방법이다. 포매팅은 아래와 같은 서식 문자들을 사용한다.

%s -->문자열 (String) 
%c -->문자 1개 
%d -->정수 
%f -->실수 
%% -->% 하나를 문자로 삽입

 

다음과 같이 포매팅을 사용하면 된다.

 

1) 문자열 뒤에 바로 % 기호를 붙여서 값을 입력한다.

포맷 코드의 사용은 뒤에 오는 값을 어떤 형태로 삽입할지 결정한다.

print("정수 : %d" % 20) 
my_str = "정수 : %d" % 30 
print(my_str)

print("실수 : %f" % 10.1) 
print("문자열 : %s" % "나는 문자열")

print("정수 : %d" % 10.123) # 실수 값을 정수로 삽입(소수점은 없어짐) 
print("실수 : %f" % 30) # 정수 값을 실수로 삽입(없던 소수점 생김)

#print("정수 : %d" % "1") # 오류! 문자열을 숫자형태로 삽입 불가 
print("문자열 : %s" % 10) # %s는 전부 문자 취급 
print("문자열 : %s" % 10.123)

여러 개 포매팅을 할 경우, 소괄호로 묶어 순서대로 값을 삽입해주면 된다.

print("%d개 이상의 %s 넣기" % (2, "값"))

 

2) 포매팅으로 소수점 표현하기

실수는 기본 소수점 6자리까지 표현하고 그 이상은 자동으로 반올림한다.

print("소수 : %f" % 10.1) # 기본 6자리 
print("소수 : %f" % 10.666666666) # 자동 반올림

print("소수점 지정 : %.3f" % 10.66666666666666)

3) 포맷 코드를 이용한 정렬과 공백

print("[%s] [%s]" % ("파이썬", "재밌다")) 
print("[%10s] [%10s]" % ("파이썬", "재밌다")) # 삽입시 10칸 확보 후 값을 넣겠다. (우측정렬) 
print("[%-10s] [%-10s]" % ("파이썬", "재밌다")) # 삽입시 10칸 확보 후 값을 넣겠다. (좌측정렬)

 

6-2. 포매팅 함수를 이용한 방법(많이 사용하는 방법) - format()

format() 함수는 '문자열'로 사용할 수 있는 '문자열의 함수'이다.

1) 만든 문자열을 변수에 대입

my_str = "제 이름은 {}입니다.".format("홍길동") 
print(my_str)

 

2) 만든 문자열을 바로 출력

print("제 나이는 {}살 입니다.".format(20))

포맷 코드 대신 {} 중괄호를 사용한다. 마치 %s와 같다.

 

3) 여러 값 사용

print("1. 제 이름은 {}이고, {}살 입니다.".format("홍길동", 20)) # 기본은 순서대로 
print("2. 제 이름은 {1}이고, {0}살 입니다.".format("홍길동", 20)) # {}안에 인덱스 사용 
#출력
1. 제 이름은 홍길동이고, 20살 입니다. 
2. 제 이름은 20이고, 홍길동살 입니다.

 

4) 키워드 사용

print("제 이름은 {name}이고, {age}살 입니다.".format(name = "홍길동", age = 20))

 

5) 소수점 표현

print("소수점 3자리 : {:.3f}".format(10.777777))

#출력 
소수점 3자리 : 10.778 

format() 함수 사용 시 중괄호{} 안에 특수한 기능을 추가하는 기호로 콜론(:)을 사용한다.

콜론을 사용할 때는 인덱스 뒤에 위치한다. 여기서 인덱스는 생략이 가능하다.

 

6) 정렬

print("[{}] [{}]".format("파이썬", "재밌다")) 
print("[{:10}] [{:10}]".format("파이썬", "재밌다")) # 10칸 확보, 기본 좌측정렬 
print("[{:>10}] [{:>10}]".format("파이썬", "재밌다")) # 우측정렬 > 
print("[{:<10}] [{:<10}]".format("파이썬", "재밌다")) # 좌측정렬 < 
print("[{:^11}] [{:^11}]".format("파이썬", "재밌다")) # 가운데 정렬 ^ 

print("[{:*^11}] [{:=^11}]".format("파이썬", "재밌다")) # 정렬 후 빈 공간에 값 채우기(단, 1개의 문자로만 채울 수 있다.)
#출력

[파이썬] [재밌다] 
[파이썬       ] [재밌다       ] 
[       파이썬] [       재밌다] 
[파이썬       ] [재밌다       ] 
[    파이썬    ] [    재밌다    ] 
[****파이썬****] [====재밌다====]
# 출력 방법 비교 
print("제 이름은 " + name + "이고,", age, "살 입니다.", sep='')# (1) 포매팅 X 경우 
print("제 이름은 %s이고, %d살 입니다." % (name, age)) # (2) 기본 포매팅 
print("제 이름은 {}이고, {}살 입니다.".format(name, age)) # (3) 포매팅함수

 

 

반응형

 파이썬 기초 문법 - 자료형 

 

1. 숫자 자료형

 

파이썬의 숫자 자료형은 '정수, 실수형, 2진수, 8진수, 16진수'로 표현할 수 있다.

'''
        정수           : -10, 0, 10
        실수형         : -1.1, 10.123
        2진수(binary)  : 0b10, 0B10
        8진수(octal)   : 0o10, 0O10
        16진수(hexadecimal) : 0x10, 0X10
'''

아래에 간단한 예제를 보자.

print("[기본 숫자형]")
print("정수 :", 10, -10, 0)
print("실수 :", -1.1, 10.123)
# print() 함수는 숫자를 10진수로 출력
print("2진수 :", 0b100, 0B100)
print("8진수 :", 0o10, 0O10)
print("16진수 :", 0x10, 0X10)

결과는 다음과 같다.

정수 : 10 -10 0
실수 : -1.1 10.123
2진수 : 4 4
8진수 : 8 8
16진수 : 16 16

 

 

2. 문자열

 

파이썬에서 문자열을 만드는 방법은 4가지가 있다.

  • 1. 큰 따옴표 1개

  • 2. 작은따옴표 1개

  • 3. 큰 따옴표 3개

  • 4. 작은 따옴표 3개

print("1. happy day")
print('2. happy day')
print("""3. happy day""")
print('''4. happy day''')

결과는 다음과 같다.

1. happy day
2. happy day
3. happy day
4. happy day

만약 여러 줄의 문자열을 출력하고 싶다면 따옴표 3개짜리를 이용하면 된다.

print("""안녕하세요
파이썬입니다.""")

hello = '''반가워요
파이썬!'''
print(hello)

문자열을 사용하고 출력할 때 사용되는 '이스케이프 문자'가 있는데, 이스케이프 문자는 문자열 안에서 특수한 기능을 가지는 문자들을 말한다. 이스케이프 문자는 역슬래시(\)로 시작해 사용한다. 아래에 여러 이스케이프 문자들이 있다.

'''
	\n : 개행(줄바꿈)
	\t : tab키를 누른 만큼 간격 띄우기
	\\ : \ 하나를 문자로 사용
	\' : ' 하나를 문자로 사용
	\" : " 하나를 문자로 사용
'''

 

 

문자열 연산하기

문자열을 연산할 때 주의할 것이 문자열끼리만 연산이 가능하다는 것이다. 예를 들어 정수와 문자열 사이의 연산을 하게 되면 오류가 발생한다. 그러니 이 점을 주의해서 사용해야 한다.

문자열 연산은 2가지 경우가 있다.

#1. + : 연결
print("안녕" + "하세요")
str1 = "안녕"
str2 = "하세요"
print(str1 + str2)

#2. * : 반복
print("안녕" * 5)
str3 = "곱셈" * 3 # 연산 결과를 만든 후 변수에 대입
print(str3)

 

 

문자열 인덱싱(Indexing)

인덱싱(Indexing)이란 index 색인, '무언가를 가리킨다'는 것으로, 문자열에서 특정 글자를 뽑아내어 사용하는 것이다. 특정 글자를 찾을 때, '순서'를 사용하는데 이 때 인덱스 번호를 이용한다. 프로그래밍에서 순서는 0부터 시작을 하며 음수일 경우 뒤에서부터 순서를 세는 방식이다.

 

 

문자열 슬라이싱

문자열 슬라이싱은 문자열은 원하는 길이만큼 조각내는 것이다. 인덱스로 특정 범위의 문자를 조각내서 사용한다. 아래처럼 다양하게 사용할 수 있다.

a[0:3] --> 콜론(:)으로 범위 지정

a[시작 인덱스:끝 인덱스] --> 끝 인덱스는 포함 X

a[시작 인덱스:] --> '시작 인덱스'부터 '끝'까지

a[:끝 인덱스] --> '처음'부터 '끝 인덱스'까지 (끝 인덱스는 포함 X)

a[:] --> 시작부터 끝 --> 전체

 

 

문자열 기본 포매팅

 

문자열 포매팅은 문자열 안에 '값'을 '삽입'하는 방법이다. 포매팅 코드(서식문자)는 4가지가 있다.

%s - 문자열 (String)
%c - 문자 1개
%d - 정수
%f - 실수
%% - % 하나를 문자로 삽입

서식 문자를 사용한 문자열 포매팅 예제들입니다.

# 문자열 뒤에 바로 % 기호를 붙여서 값을 입력
print("정수 : %d" % 20)
my_str = "정수 : %d" % 30
print(my_str)
print("실수 : %f" % 10.1)
print("문자열 : %s" % "나는 문자열")

print("정수 : %d" % 10.123) # 실수 값을 정수로 삽입(소수점은 없어짐)
print("실수 : %f" % 30) # 정수 값을 실수로 삽입(없던 소수점 생김)

print("문자열 : %s" % 10) # %s는 전부 문자 취급
print("문자열 : %s" % 10.123)
#결과
정수 : 20
정수 : 30
실수 : 10.100000
문자열 : 나는 문자열
정수 : 10
실수 : 30.000000
문자열 : 10
문자열 : 10.123

다음으로 포맷 코드 대신 format() 함수를 이용한 문자열 포매팅 방법입니다.

my_str = "제 이름은 {}입니다.".format("홍길동") # 만든 문자열을 변수에 대입
print(my_str)

name = "홍길동"
age = 20
print("제 이름은 {}이고, {}살 입니다.".format(name, age))

 

반응형

+ Recent posts