a = "Hello World"


라고 되어있을때 Hello World의 값을  바꿀수가 없다. 5장에서 말했듯이 immutable 형이라고 도 한다고 한다.


a[0] = 은 지금 H값이 되겠지만

a[0] = "A"로 바꿀수는 없는 것이다.


하지만 조금 주먹 구구식으로 말하자면


a="String Format"

print(a[:1])
# S t r i n g
# 0 1 2
# 0 <= a < 1
# S 가 출력

# S t r i n g
# 0 1 2
# 2 < = a <
# r 부터 출력되게 된다.
print(a[2:])
b = a[:1] + 'T' + a[2:]
print("formatting a -> ",b)
# 새로운 문자를 출력하기 위해서 일단 주먹 구구식으로 변환이 가능 하다


결과

S

ring Format

formatting a ->  STring Format


현재 보여진것은 문자열 포매팅은 아니고 기본적인 변화와 문자열이 선언후에는 변하지 않는 점을 알수 있도록 하였다.


format="Hello %d World " % 3
print(format)


결과


Hello 3 World 


format="Hello %s" % "World"
print(format)

결과

Hello World


숫자와 문자열도 포매팅이 되는 법을 알수가 있다. !!    %d %s 는 C언어에서도 자주 보아왔던 포매팅 방식이다.

var을 이용한 포매팅


위에 예제에서 숫자만 변수로 따로 선언 해주면 된다.

number =3
format = "Hello %d World " % number

print(format)


결과

Hello 3 World 


두개이상의 포매팅을 해주는 경우 방법

format = "World"
number = 3

second_format = "Hello %s is %d" % (format,number)

print(second_format)

결과

Hello World is 3


, 로 구분하여서 넣으면 된다.  printf("",a,b)와 비슷한 맥락 


파이썬 문자열 포맷 


1.       %s        문자열(string)

2.       %c        문자 1개(character)

3.       %d        정수(Integer)

4.       %f        부동 소수(floating-point)

5.       %o        8진수

6.       %x        16진수

7.       %%       '%' 문자 자체

&& "%50s" -> 전체 50자의 문자열 공간에서 우측으로 정렬 하고 나머지는 공백으로 놓게된다.


C언어에서 50자를 띄워쓰기를 하는 경우와 다른 점을 인지한다.

"%-50s" -> 전체 50자의 문자열 공간을 잡고 좌측으로 정렬후 나머지 우측은 공백으로 놓게 된다.



%0.3f = 소수점 세 번째 자리 까지 나타낸다.

앞에 0 대신에 숫자가 들어오게 되면 양수일 경우에는 위와같이 문자열 공간의 개수를 잡고 공백을 넣는다.

%10.3f 

문자열 공간을 10칸을 잡고 우측 정렬을 하게된다. ex: "%10.3f" % 3.1452452

 ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ 

                     3  .   1  4  5 

로 잡히게 된다. 


문자열 관련 내부 함수 

temp="Hello World"
print("Hello World 'l' count",temp.count('l'))
print("Hello World 'd' find ",temp.find('d'))

find 

count

index


결과

Hello World  'l' count 3

Hello World  'd' find  10


find의 경우 찾는 문자열이 없다면 -1을 반환하게 된다. d의 문자열이 처음 나오는 위치인 10을 반환하게 된다.

index의 경우도 find와 같은 기능을 한다. 하지만 찾는 문자열이 없는 경우에 대해서는 오류를 발생 시킨다.



uppder 함수 


temp ="hello world"

print(temp.upper())


결과 


HELLO WORLD


lower 함수

temp = "HELLO WORLD"

temp.lower()


결과


hello world


join 함수 (해당 함수와 같이 split 함수에 대해서는 따로 작성) 해당함수에 대해서 는 이해를 돕다 보니


작성할 내용이 많아져서 해당에 대해 따로 작성 하도록 함 


lstrip(왼쪽 공백 지우기)

rstrip(오른쪽 공백 지우기)

strip(양쪽 공백 지우기)

replace(바뀌게 될 문자열, 바꿀 문자열) 문자열을 바꿈

오해하지 말아야 할 부분은

temp ="Hello World Start to Start"
print(temp.replace("Start","End"))
print(temp);

결과는

Hello World End to End

Hello World Start to Start

가 나오게 된다. 변환을 하기는 하지만 파이썬에서는 immutable 에 대해서 절대로 까먹지 말아야 한다.

temp를 Hello World Start to Start로 선언을 했을시에 절대로 이 값에 대해서는 변화가 이루어지지 않는다.














'개발일지(Language) > Python(3.x)' 카테고리의 다른 글

8 - 쉬어가기(연습문제)  (0) 2016.07.26
7 - 문자열 포매팅(발전)  (0) 2016.07.26
5 - 문자열 과 자료형  (0) 2016.07.25
4 - 연산자  (0) 2016.07.25
3 - 숫자형  (0) 2016.07.25

+ Recent posts