출처 : 열혈강의 파이썬
posted by _cham
지금까지 해보니 너무 속도가 더딘거 같아서 지금부터는 조금 더 속도를 높이기 위해 c언어나 다른 언어와 비슷한 부분은 넘기고 차이점 위주로 설명을 할 것이다. 아마 파이썬을 공부하는 분들은 c언어 정도는 알고 있으실 것이다.
@시퀀스 자료형
문자열은 시퀀스(Sequence)자료형이다. 여러 객체들을 저장하는 저장 자료형이며, 그 객체들은 순서를 가진다. 그래서 첨자(Index)를 이용하여 참조가 가능하다.
- 여러 개의 객체를 저장할 수 있다.
- 각 객체들은 순서를 갖는다.
- 각 객체들은 첨자를 이용하여 참조 가능하다.
문자열은 ' 혹은 " 로 묶인 문자들의 열이다. 리스트는 [ ], 튜플은 ( ) 안에 둘러싸인 객체들의 모임이다. 조금씩 다른 특징을 가지고 있지만, 모두 시퀀스 형 자료형이라는 공통적인 특성을
가지고 있다.
- 인덱싱(Indexing) - [k]
k번 위치의 값 하나를 취한다
- 슬라이싱(Slicing) - [s:t]
s부터 t사이 구간의 값을 취한다
- 연결하기(Concatenation) - +
두 시퀀스 자료를 붙여서 새로운 자료를 만든다
- 반복하기(Repetition) - *
시퀀스 자료를 여러 번 반복해서 새로운 자료를 만든다
- 멤버십 테스트(Membership Test) - in
어떤 값이 시퀀스 자료에 속하는지를 검사한다
- 길이 정보(len)
시퀀스 자료의 크기를 나타냄
@@슬라이싱
슬라이싱은 [시작옵셋:끝옵셋] 형식이다. 옵셋은 생략될 수 있고, 시작 옵셋이 생략되면 0, 끝 옵셋이 생략되면 마지막 값으로 처리된다. 2장에서 다루었으므로 기본적인 내용은 생략한다. 가볍게 예만 보겠다
@@확장 슬라이싱
세 번째 [start : stop : step] step을 가진 슬라이싱을 확장 슬라이싱 이라고 한다.
@@반복하기
*연산자를 이용하여 시퀀스 객체를 여러 번 반복해서 붙일 수 있다.
@@멤버십 테스트
어떤 객체가 시퀀스 객체에 포함된 것인지 검사하는 것을 '멤버십 테스트' 라고 한다. 리턴 값 1은 '참' 0은 '거짓'을 의미함
문자열인 경우, in 연산자로 부분 문자열을 확인할 수 있다.
@@길이 정보
내장함수 len을 이용하여 시퀀스 객체 안에 있는 전체 요소의 개수를 알아낼 수 있다.
@문자열 정의하기
@@한 줄 문자열
별거없다
전부 똑같다
@@여러 줄 문자열
이렇게 싱글쿼터나 더블쿼터가 3개를 넣으면 이렇게 여러 줄에 걸쳐서 문자열을 입력 할 수가 있다.
이스케이프 문자도 모두 다른 언어들과 같지만 한가지 눈여겨 볼게 있다면
\ Enter 를 치면 라인이 연속으로 된다.
이런식으로
자 이것말고는 볼게없다
다음으로 넘어가자
@문자열 포매팅(Formatting)
내가 생각하기에 이 부분은 아주 중요하다. 아주 파이썬적인 문법이다
이건 문자열을 좀 더 자유롭게 구성할 수 있는 방법이다. 여기서 포맷은 문서의 틀 혹은 양식을 말한다.
백문이 불여일견이라고 예제를 한번 보면서 이해하자
@@튜플을 이용한 포매팅
이런식으로 문서의 양식을 만들 수 있다.
%s는 내용이 채워질 부분이고, 나머지는 틀이 된다.
문서 양식도 볼 수 있다.
이렇게 튜플을 이용해서도 가능하다.
이런것도 가능하다
예제를 봅시다
#참고
만약 %문자를 출력해야 하는 경우에는 %%를 사용한다
예제를 보자
여러 자료형에 대한 출력값을 보자
예제를 보자
[포맷 문자열]
포맷 문자열 | 설명 |
%s | 문자열 혹은 임의의 객체를 문자열로 변환한다. (str( ) 함수를 이용한다.) |
%r | 문자열 혹은 임의의 객체를 문자열로 변환한다. (repr( ) 함수를 이용한다.) |
%c | 길이 1의 문자열 '%c' % 'A' |
%d | 10진 정수 |
%i | 정수 (%d 와의 차이가 없다.) |
%u | 부호 없는 정수 '%u' % -12 의 결과는 '4294967284' 양수는 그대로, 음수는 양수적 해석을 적용한다. |
%o | 8진수 '%o' % 12 의 결과는 '14' |
%x | 16진수 '%x' % 12 의 결과는 'c' |
%X | 16진수 대문자 '%X' % 12 의 결과는 'C' |
%e | 부동 소수점(실수)을 지수 형태로 표현, 유효 숫자는 7자리로 표현한다. '%e' % 123.45678결과는 '1.2345678e+002' |
%E | %e와 동일하다. 단, 지수 표현을 대문자 E로 한다. |
%f | 부동 소수점(실수)을 표현 '%f' % 123.45678 결과는 '123.456780' |
%g | 부동 소수점을 편의에 따라서 소수점 형식 혹은 지수 형식으로 변환한다. 6자리의 유효 숫자로 표현한다. |
%G | %g와 같다. 단, 지수 표현을 대문자 E로 한다. |
str( ) 는 print문에 의한 출력과 같다
repr( ) 는 변수만 입력해서 17자리의 유효 자리를 출력하는 것과 같다
[보조 포맷 문자열 지시자]
기호 | 설명 | 예 |
m | m개의 최소 자리를 확보한다. | >>> '%5s' % ('egg') ^^^^^egg |
m, n | m개의 최소 자리를 확보하고, n개의 소수점 이하 자리를 출력한다. | >>> '%5.2f' % 1.456789 1.46 |
- | 왼쪽으로 맞추어서 출력한다 | >>> '%-d, %-d' % (123, -123)
|
+ | + / - 부호 출력 | >>> '%+d, %+d' % (123, -123) |
공백 | 양수일 때 공백을 삽입한다 | >>> '% d', % d' % (123, -123) |
# | 8진수 출력에는 0, 16진수 출력에는 0x 혹은 0X 를 앞에 붙인다 | >>> '%#o %#x %#X' % (12,12,12) |
0 | 좌측 빈 공간을 0으로 채운다 | >>> '%05d' % 12 |
이제 예제들을 보면서 이해를 해보자
m, n
m은 최소 자리 확보
n은 소수점 이하 자리
-는 왼쪽정렬
+는 안쓰는것과 같이 오른쪽 정렬
+는
+ 일때 + 기호 표시해줌
공백은
+일때 공백을 하나 추가해줌(칸 맞추기 용인듯)
#을 넣으면 각 자료형을 표시해줌
@@사전을 이용한 포매팅
포맷 문자열이 사전의 키 이름으로 표현되면, 사전에 있는 값으로 그 부분이 대치된다
튜플과 똑같으므로 간단한 예제만 보고 넘어가자
#여기서! 파이썬에서는 모든 변수를 사전 형식으로 저장된다!
지역 영역에서 치환된 변수 사전을 얻으려면 vars( ) 또는 locals( ) 를 이용해보자
따라서, 포매팅을 사용할때 vars( ) 나 locals( ) 를 이용하면 표현된 포맷 문자열에 변수 이름으로 사용할 수도 있다.
@문자열 메쏘드
자 이제 문자열에 관련된 쓸만한 메쏘드들을 살펴보자
@@대소문자 변환에 관한 메쏘드
upper는 대문자로, lower()는 소문자로
swapcase는 대문자는 소문자로, 소문자는 대문자로
capitalize는 맨 앞글자만 대문자로
title은 각 단어의 첫글자를 대문자로
@@검색에 관련된 메쏘드
count는 총 개수 찾기
find는 어느 오프셋에 그 단어가 있는지 찾기
find에 뒤에 3을 넣으면 3번 오프셋부터 찾겠다는 뜻
find에서 일치하는 문자열이 없다면 -1을 반환
rfind는 뒤에서부터 찾겠다
startswith는 맨 처음에 시작하는 문자열이 일치하느냐
뒤에 숫자가 들어가면 7번 오프셋에서 이 문자열로 시작하느냐
endswith는 맨 뒤에 문자열로 끝나느냐
뒤에 숫자가 들어가면 만약 0, 26 이라면 0번~26번 오프셋에서 끝나는 문자열이 일치하느냐
@@편집 및 치환과 관련된 메쏘드
strip은 좌우의 공백을 없앤다
strip에 'l'이나 'r'을 붙으면 '좌' 와 '우' 의 공백을 없앤다
strip에 넣고 싶은 문자열들을 넣으면 그에 해당하는 문자열들을 없애준다.하지만 strip은 좌우의 맨 끝만 지워주기 때문에 a가 나오게 되면 그 앞쪽은 없어지지 않는다
replace로 문자열을 치환할 수 있다.
@@문자열 분리와 결합에 관련된 메쏘드
split은 기본적으로 공백으로 분리한다. 사용자가 원하는 것으로 지정할 수도 있다.
split도 lsplit이나 rsplit을 사용하여 왼쪽이나 오른쪽부터 처리하게 할 수 있다.
':'.join(t)를 보면 t에는 리스트가 들어있다. 그 리스트들의 문자열들을 ':' 로 결합한다는 뜻이다
'\n'.join(t)로 하면 개행으로 결합
splitlines는 라인 단위로 분리
#join을 살펴보자
':'join(t) 는 t는 리스트이고 ':'는 리스트의 문자열들을 연결한 문자열이다.
join의 사용법을 종종 혼돈하는 경우가 많으므로 주의하자
@@정렬에 관련된 메쏘드
center(40) 전체 40 문자의 가운데에 맞추겠다는 뜻
이건 이제 설명안해도….
center rjust ljust 모두 채워질 문자를 선택할 수 있다.
@string모듈
@@stirng모듈 상수
printable은 출력 가능한 문자들 모두
whitespace는 공백 문자 모두(8진수 표현)
간단한 예제로 어떻게 사용하는지 보자
id를 입력받는데 id가 영문자와 숫자로만 이루어진 id로써 적합한지에 대한 소스이다
@유니코드
유니코드는 다국어 문자를 표현하기 위한 코드체계이다.
유니코드를 표현하는 문자열은 u'String' 이다.
unicode()는 유니코드 문자열로 변환한다.
유니코드 문자열을 원하는 코딩으로 다시 변환하려면 econde([encoding]) 메쏘드를 사용한다.
encoding은 'euc-kr', 'utf-8', 'iso-8859-1'와 같은 문자열이다.
한글 문자열의 길이는 len함수로 잘 계산되지 않으나, unicode를 이용하면 쉽게 해결된다.
그리고 인덱싱도 가능
훌루루루…
'Programming' 카테고리의 다른 글
gcc 기본 (0) | 2014.07.01 |
---|---|
5장 리스트 (0) | 2011.08.13 |
3장 수치 자료형과 연산자 (0) | 2011.08.08 |
2장 파이썬 문과 기본 자료형 (0) | 2011.08.06 |
1장 파이썬 시작하기 (2) | 2011.08.06 |