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 |