In [66]:
from __future__ import print_function
In [3]:
print 'hi' # 3버전을 사용하면 2 버전 스타일은 문법 오류!
In [2]:
print('hi guys')
print('hi', 'guys')
print('hi'+ ' guys')
In [3]:
print('hi', 'guys', sep='')
print('hi', 'guys', sep='...')
In [4]:
# 탈출(escape) 문자 활용
print('안녕\n하세요')
print('안녕\t하세요')
print('안녕\
')
print('안녕', end='\t')
print('하세요')
print("따옴표 '가 많이 신경쓰여요")
# 따옴표 효과 해제
print('따옴표 \'가 많이 신경쓰여요')
2 버전 스타일. 권장하지 않음.
In [41]:
template = '내 이름은 %s입니다.'
print(template % '이성주')
3 버전 스타일을 권장
In [5]:
template = '내 이름은 {}입니다. 이메일은 {}입니다. 몸무게: {}'
print(template.format('이성주', 'seongjoo@codebasic.co', 85))
문자열 템플릿 사용 시, unicode와 str이 결합되지 않도록 유의
In [21]:
print(u'이름: {}'.format('이성주')) # 오류! unicode와 str의 조합
In [7]:
template = '{2} {1} {0}'
text = template.format('one', 'two', 'three')
print(text)
In [5]:
for x in range(1,6):
print(x, '*', x, '=', x*x)
자리수 표현
In [8]:
print(4/3)
print('{}'.format(4/3))
In [12]:
# 소수점 표현 (기본 6자리)
print('{:f}'.format(4/3))
print('{0:f}'.format(5/2))
print('{0:f}'.format(2))
In [67]:
print('{0:.1f}'.format(4/3))
print('{0:.2f}'.format(4/3))
print('{0:.3f}'.format(4/3))
In [14]:
# 소수점 개수를 선택하면 반올림
n = 5.0/3
print('{0:f}'.format(n))
print('{0:.1f}'.format(n))
In [68]:
# 그 밖의 양식
print('{0:e}'.format(4/3))
print('{0:%}'.format(4/3))
정렬
In [6]:
print('오른쪽 정렬'.rjust(20))
print('오른쪽 정렬'.rjust(1))
print('중앙 정렬'.center(20))
print('중앙 정렬'.center(1))
print('왼쪽 정렬...은 원래 되는데 아랍어 등은 방향이 반대니까'.ljust(10))
In [16]:
for x in range(1,6):
print('{} x {} = {}'.format(x,x,str(x*x).rjust(3)))
In [17]:
for x in range(1,6):
print('{} x {} = {}'.format(x,x,str(x*x).zfill(3)))
한국어와 같은 비 ASCII 문자 정렬 시, 유니코드가 아닌 경우 발생할 수 있는 문제
In [19]:
len('공학수학'.rjust(10))
Out[19]:
In [20]:
len( u'공학수학'.rjust(10))
Out[20]:
In [26]:
#print('공학수학'.rjust(10))
#print(' Math', ' Stats')
col_width=10
print(u'Math'.rjust(col_width), u'Stats'.rjust(col_width), u'Prog.'.rjust(col_width))
print( u'90'.rjust(col_width), u'85'.rjust(col_width), u'95'.rjust(col_width))
In [18]:
scores=[{'이름': '이성주',
'과목점수': {'Math': 90, 'Stats': 84, 'Prog.': 92}},
{'이름': '김성주',
'과목점수':{'Math': 95, 'Stats': 80, 'Prog.': 90}}]
col_width = 10
print('이름'.rjust(col_width), end='')
print('Math'.rjust(col_width), end='')
print('Stats'.rjust(col_width), end='')
print('Prog.'.rjust(col_width))
for student in scores:
print(student['이름'].rjust(col_width), end='')
# 과목점수 표시
print(str(student['과목점수']['Math']).rjust(col_width), end='')
print(str(student['과목점수']['Stats']).rjust(col_width), end='')
print(str(student['과목점수']['Prog.']).rjust(col_width))
In [23]:
open('no_such_file.txt')
In [24]:
open('hello_world.txt')
Out[24]:
파일 내용 읽기
In [33]:
f = open('hello_world.txt')
lines = f.readlines()
lines[0]
Out[33]:
한글 윈도우의 메모장, 액셀과 같은 일부 앱은 cp949 인코딩으로 되어 있다.
In [61]:
f = open('file_with_cp949_encoding.txt')
text = f.read()
print(text.decode('cp949'))
In [34]:
for l in lines:
print(l, end='')
In [43]:
f = open('hello_world.txt')
f.read()
Out[43]:
In [44]:
f.read()
Out[44]:
In [46]:
f.seek(0)
lines = f.readlines()
type(lines[0])
Out[46]:
In [42]:
f.seek(0)
f.read()
f.tell()
Out[42]:
파일 쓰기
In [59]:
text = ['hello, world!', 'how are you?', 'fine, thank you!']
f = open('hello_write.txt', 'w')
for line in text:
f.write(line)
f.write('\n')
f.close()
이어쓰기
In [60]:
f = open('hello_write.txt', 'a')
f.write('and you?')
f.close()
유니코드 문자열의 파일 쓰기
In [65]:
text = u'파이썬'
f = open('hello_python.txt', 'w')
# 문자열 인코딩
text_encoded = text.encode('utf-8')
# 파일 쓰기 실행
f.write(text_encoded)
f.close()
In [69]:
import pickle
In [71]:
some_data = [('a','b'), {'a':1, 'b':1}]
In [72]:
data_str = str(some_data)
In [73]:
data_str
Out[73]:
In [74]:
list(data_str)
Out[74]:
In [78]:
f = open('temp_data', 'w')
pickle.dump(some_data, f)
f.close()
짠지(pickle)에서 데이터 꺼내오기
In [79]:
del some_data
In [80]:
some_data
In [81]:
f = open('temp_data')
some_data = pickle.load(f)
print(some_data)
In [82]:
msg = raw_input('Input message: ')
print(msg)
In [ ]: