In [116]:
text='하나 둘 셋'
문자열의 길이
In [117]:
len(text)
Out[117]:
인덱스
In [118]:
text[3]
Out[118]:
In [119]:
text[-1]
Out[119]:
슬라이스
In [120]:
text[0:2]
Out[120]:
In [121]:
text[3:4]
Out[121]:
In [122]:
text[-3:]
Out[122]:
건너뛰기
In [112]:
text = '1-2-3-4-5'
text[::2]
Out[112]:
In [114]:
text[::-1]
Out[114]:
In [92]:
"파이썬" == "파이썬"
Out[92]:
In [93]:
"파이썬" != "자바스크립트"
Out[93]:
In [140]:
'python' > 'Python'
Out[140]:
In [94]:
"파이썬" > "자바스크립트"
Out[94]:
In [138]:
"파이썬" > "하이썬"
Out[138]:
In [6]:
text + ' 넷'
Out[6]:
In [141]:
text+4
In [20]:
text + str(4)
Out[20]:
In [1]:
texts = ['하나', '둘', '셋', '넷']
In [2]:
" ".join(texts)
Out[2]:
In [4]:
",".join(texts)
Out[4]:
In [143]:
text = '파이썬 프로그래밍을 즐기는 파이썬 프로그래머'
In [125]:
'파이썬' in text
Out[125]:
In [142]:
'자바스크립트' in text
Out[142]:
In [126]:
text.index('파이썬')
Out[126]:
In [128]:
text.find('파이썬')
Out[128]:
In [144]:
text.index('파이썬', 3)
Out[144]:
In [145]:
text.find('파이썬', 3)
Out[145]:
In [154]:
text.rindex('파이썬', 0, 15)
Out[154]:
In [129]:
text.rfind('파이썬')
Out[129]:
In [156]:
text.rfind('파이썬', 3, 15)
Out[156]:
In [ ]:
text.r
string.index와 string.find의 주요한 차이점
In [115]:
text.index('스칼라') # ValueError
In [38]:
text.find('스칼라')
Out[38]:
In [52]:
for fn in ['my_picture.jpg', 'family_picture.jpeg', 'logo.png']:
if fn.lower().endswith(('.jpg', '.jpeg')):
print(fn, " 파일은 JPEG 이미지")
In [157]:
text = '파이썬은 데이터 처리에 적합합니다.'
In [158]:
text.split()
Out[158]:
In [159]:
data = '이름, 이메일, 전화번호'
data.split(',')
Out[159]:
In [46]:
filepath = 'c:\\users\\seongjoo\documents'
In [47]:
filepath.partition("\\")
Out[47]:
In [48]:
filepath.rpartition("\\")
Out[48]:
In [53]:
text = "\t 문자열 정리 "
In [54]:
text.lstrip()
Out[54]:
In [55]:
text.rstrip()
Out[55]:
In [56]:
text.strip()
Out[56]:
In [57]:
"<[(알맹이)]>".strip("[](){}<>")
Out[57]:
In [58]:
birth_date = '1982/12/27'
birth_date.replace('/','-')
Out[58]:
In [55]:
text = 'big python, python for big data. Python is the best!'
text.lower().count('python')
Out[55]:
In [7]:
'내 이름은 {}입니다. 이메일은 {}입니다.'.format('이성주', 'seongjoo@codebasic.co')
Out[7]:
In [8]:
'{2} {0} {1}'.format('하나', '둘', '셋')
Out[8]:
천 단위 쉼표 출력
In [21]:
'{:,}'.format(123456789)
Out[21]:
In [19]:
'{0:f} {1:.1f} {2:.2f} {3:.2e} {4:.1%}'.format(3.15, 3.15, 3.0, 1/3, 1/3)
Out[19]:
In [1]:
import string
문자열 상수
In [5]:
string.ascii_letters
Out[5]:
In [3]:
string.ascii_lowercase
Out[3]:
In [4]:
string.ascii_uppercase
Out[4]:
In [6]:
string.digits
Out[6]:
In [21]:
from string import Template
In [24]:
template = Template('$who likes $what')
template.substitute(who='SJ', what='Python')
Out[24]:
기본적으로는 공백을 기준으로 분리
쉼표를 기준으로 분리
In [34]:
text = '데이터는 파이썬, 파이썬은 데이터'
if text.find('파이썬') == text.rfind('파이썬'):
verdict = '유일한 단어'
else:
verdict = '해당 단어가 두 개 이상'
print(verdict)
In [63]:
text = 'big python, python for big data. Python is the best!'
text_kr = u'빅 파이썬, 빅데이터를 위한 파이썬. 파이썬이 최고'
In [39]:
string.lower('HELLO')
Out[39]:
In [46]:
string.find(text, 'javascript')
Out[46]:
In [65]:
string.find(text_kr, u'파이썬')
Out[65]:
In [49]:
text = 'big python, python for big data. Python is the best!'
string.find(text, 'python', 18)
Out[49]:
In [53]:
text = 'big python, python for big data. Python is the best!'
text_lower = string.lower(text)
start_index_list = []
start_idx = 0
while start_idx < len(text_lower):
idx = string.find(text_lower, 'python', start_idx)
if idx == -1:
break
start_index_list.append(idx)
start_idx = idx+len('python')
print(start_index_list)
In [ ]:
해결하고자 하는 문제: 텍스트에서 특정한 패턴의 탐색, 추출
In [63]:
text = """이성주의 전화번호는 010-1234-5678입니다.
이메일은 seongjoo@codebasic.co입니다. 김성주의 전화번호는 010-4321-8765입니다."""
In [64]:
import re
phonePattern = re.compile(r'\d{3}-\d{4}-\d{4}')
phonePattern.findall(text)
Out[64]:
In [ ]:
In [35]:
text = 'Python'
유니코드는 인코딩에 따라 서로 다른 바이트값을 가질 수 있다.
In [42]:
'Python'.encode('utf8')
Out[42]:
In [43]:
'Python'.encode('utf16')
Out[43]:
In [44]:
'Python'.encode('utf32')
Out[44]:
바이트를 유니코드의 코드포인트로 변환하는 작업을 디코딩이라 한다.
In [49]:
text_encoded = '빅파이'.encode('utf8')
text_encoded
Out[49]:
In [50]:
text_encoded.decode('utf8')
Out[50]:
디코드 시, 인코딩 정보가 일치해야 한다.
In [51]:
text_encoded = '빅파이'.encode('utf8')
text_encoded.decode('cp949')
유니코드 코드 포인트 값 얻기
In [86]:
ord('파이썬'[0])
Out[86]:
In [87]:
hex(ord('파이썬'[0]))
Out[87]:
코드 포인트값에서부터 유니코드 문자로 변환
In [88]:
chr(54028)
Out[88]:
In [90]:
chr(0xd30c)
Out[90]:
In [55]:
text_encoded = '빅파이(bigpy)'.encode('utf8')
text_encoded
Out[55]:
In [56]:
text_encoded[0]
Out[56]:
In [57]:
text_encoded[:1]
Out[57]:
In [ ]:
In [131]:
from pandas import Series
In [132]:
data = {'이성주': 'seongjoo@email.com', '튜링': ''}
In [134]:
data = Series(data)
data
Out[134]:
In [135]:
data.str.contains('email.com')
Out[135]:
In [136]:
data.str.count('email.com')
Out[136]:
문자열 '프로그래밍 \<b>파이썬\</b>'에서 b 태그 내 문자열을 추출하시오.
>>> extract_tag('프로그래밍 \파이썬\', "b")
'파이썬'
'데이터는 파이썬, 파이썬은 데이터'이 담겨있다. 대상 문장 내 '파이썬'이라는 단어가 유일한지, 또는 두 개 이상인지를 판별하는 논리를 구현하시오.
문자열 '앨런 매티슨 튜링(Alan Mathison Turing, OBE, FRS, 1912년 6월 23일 ~ 1954년 6월 7일)은 영국의 수학자, 암호학자, 논리학자이자 컴퓨터 과학의 선구적 인물이다.'에 대해 다음을 수행하시오.
1) 출생일과 사망일을 추출해 다음과 같이 출력하시오.
출생: 1912-06-23 사망: 1954-06-07
2) 사망 당시, 나이를 계산하시오.
In [82]:
import re
from datetime import datetime
alan_turing = """앨런 매티슨 튜링(Alan Mathison Turing, OBE, FRS, 1912년 6월 23일 ~ 1954년 6월 7일)은
영국의 수학자, 암호학자, 논리학자이자 컴퓨터 과학의 선구적 인물이다."""
date_str_pattern = re.compile(r"\d{4}년 \d{1,2}월 \d{1,2}일")
birth_str, death_str = date_str_pattern.findall(alan_turing)
birth_date = datetime.strptime(birth_str, '%Y년 %m월 %d일')
death_date = datetime.strptime(death_str, '%Y년 %m월 %d일')
life_span = death_date - birth_date
death_age = life_span.days//365
print("출생: {}".format(birth_date.strftime('%Y-%m-%d')))
print("사망: {}".format(death_date.strftime('%Y-%m-%d')))
print("사망 시 나이: {}세".format(death_age))
In [ ]: