<jupyter_start><jupyter_text>****** 8. 문자열 메소드와 포멧팅****** *** 1 문자열 메소드(Methods)***<jupyter_code>s = 'i like programming.'
print(s.upper())
print(s.upper().lower())
print('I Like Programming'.swapcase())  # 대문자는 소문자로, 소문자는 대문자로 변환
print(s.capitalize()) # 첫 문자를 대문자로 변환
print(s.title())      # 각 단어의 첫 문자를 대문자로 변환 
s = 'i like programming, i like swimming.'
print(s.count('like'))       # 'like' 문자열이 출현한 횟수를 반환
print()
print(s.find('like'))        # 'like'의 첫글자의 인덱스인 위치(offset)를 반환
print(s.find('programming')) # 'programming'의 첫글자 위치를 반환
print(s.find('programmin'))  # 'programmin'의 첫글자 위치를 반환
print(s.find('programmii'))  # 'programmii' 단어는 없기 때문에 -1 반환
print()
print(s.find('like', 3))     # offset=3 부터 'like'을 검색하여 'like'의 첫글자 위치 반환 
print(s.find('my'))          # 'my' 단어는 없기 때문에 -1 반환
s = 'i like programming, i like swimming.'
print(s.startswith('i like')) # 'i like'로 시작하는 문자열인지 판단
print(s.startswith('I like')) # 대소문자 구별
print()

print(s.endswith('swimming.')) # 'swimming.'로 끝나는 문자열인지 판단
print(s.startswith('progr', 7)) # 7번째 문자열이 'progr'로 시작하는지 판단
print()
u = ' spam and ham          '
print(len(u))
print(u.strip())  # 좌우 공백을 제거하여 새로운 스트링 생성
print(u)          # 스트링은 변경불가능 
y = u.strip()     # 즉, strip()는 새로운 스트링을 생성함
print(y)
print(len(y))
print()

print(u.rstrip()) # 오른쪽 공백 제거
print(u.lstrip()) # 왼쪽 공백 제거   
print()

print('     abc '.strip())                            
print('><><abc<><><>'.strip('<>')) # 인자로 주어진 스트링 안에 지정된 모든 문자를 좌우에서 제거
p = ' \t abc \t '
print(p)
print(p.strip()) # \t도 공백문자이므로 제거됨
u = 'spam and ham'
print(u.replace('spam', 'spam, egg')) # replace()는 새로운 스트링을 생성함
print(u)
u = ' spam and ham     '
print(u.split()) # 공백으로 분리 (모든 공백 제거 및 문자열 내의 단어 리스트를 얻을 수 있음)
print(u.split('and')) # 'and'로 분리
print()

u2 = 'spam and ham\tegg\ncheese'
print(u2.split())
u = 'spam ham\tegg\ncheese'
print(u)
t = u.split()     # 문자열 내의 단어 리스트    
print(t)
print()
t2 = ':'.join(t)  # 리스트 t 내부의 각 원소들을 ':'로 연결한 문자열 반환
print(type(t2))
# <type 'str'>
print(t2)
print()

t3 = ",".join(t)  # 리스트 t 내부의 각 원소들을 ','으로 연결한 문자열 반환
print(t3)
print()

t4 = '\n'.join(t) # 리스트 t 내부의 각 원소들을 '\n'으로 연결한 문자열 반환
print(t4)
print()
#u2 = u"스팸 햄 계란 치즈" 
u2 = "스팸 햄 계란 치즈"  # python 3 부터는 u 리터럴 표기 불필요
t2 = u2.split()
print(t2)
print(t2[0], t2[1], t2[2], t2[3])
lines = '''first line
second line
third line'''
print(type(lines))
lines2 = lines.splitlines() # 문자열을 라인 단위로 분리한 각 원소들을 지닌 리스트 반환
print(type(lines2))
print(lines2)


# <type 'str'>
# <type 'list'>
# ['first line', 'second line', 'third line']
u = 'spam and egg'
c = u.center(60) # 60자리를 확보하되 기존 문자열을 가운데 정렬한 새로운 문자열 반환
print(type(c))
# <type 'str'>
print(c)
print(u.ljust(60)) # 60자리를 확보하되 기존 문자열을 왼쪽 정렬한 새로운 문자열 반환
print(u.rjust(60)) # 60자리를 확보하되 기존 문자열을 오른쪽 정렬한 새로운 문자열 반환
u = 'spam and egg'
print(u.center(60, '-')) # 공백에 채워질 문자를 선택할 수 있음
print(u.ljust(60, '-'))
print(u.rjust(60, '-'))
print('1234'.isdigit()) # 문자열 내의 Character들이 모두 숫자인가?
print('abcd'.isalpha()) # 문자열 내의 Character들이 모두 영문자인가?
print('1abc234'.isalnum()) # 문자열 내의 Character들이 모두 영문자 또는 숫자인가? 
print('abc'.islower()) # 문자열 내의 Character들이 모두 소문자인가?
print('ABC'.isupper()) # 문자열 내의 Character들이 모두 대문자인가?
print('\t\r\n'.isspace()) # 문자열 내의 Character들이 모두 공백 문자인가?
print('This Is A Title'.istitle()) # 문자열이 Title 형식 (각 단어의 첫글자가 대문자)인가?
s = '123'
print(s.zfill(5)) # 5글자 자리 확보뒤 문자열을 쓰되 남는 공백에는 zero (0)를 채움 
print('goofy'.zfill(6)) # 6글자 자리 확보뒤 ...<jupyter_output>00123
0goofy<jupyter_text>*** 2 문자열 포매팅***  2-1 튜플을 이용한 포매팅  1) 문자열 변환 - 포맷팅 문자  - 문자열 내에 존재하는 %- 포캣팅을 활용한 문자열 변환  - 포맷팅 문자를 포함하는 문자열 % 튜플<jupyter_code>print('name = %s, age = %s' % ('gslee', '24'))
letter = '''
안녕하세요 %s님,

오늘 밤 파티에 참석해 주실 수 있나요?

그럼..

이강성 드림'''
name = '홍길동'
print(letter % name)
print()
names = ['한학신', '정인숙', '박미경']
for name in names:
    print(letter % name)
    print('-' * 40)
    print()<jupyter_output>안녕하세요 홍길동님,

오늘 밤 파티에 참석해 주실 수 있나요?

그럼..

이강성 드림


안녕하세요 한학신님,

오늘 밤 파티에 참석해 주실 수 있나요?

그럼..

이강성 드림
----------------------------------------


안녕하세요 정인숙님,

오늘 밤 파티에 참석해 주실 수 있나요?

그럼..

이강성 드림
----------------------------------------


안녕하세요 박미경님,

오늘 밤 파티에 참석해 주실 수 있나요?

그럼..

이강성 드림
----------------------------------------<jupyter_text>2) 포맷팅 문자 |중요| 포맷팅 문자 | 설명                                                                         ||--|-------------|------------------------------------------------------------------------------||O |     %s      | 문자열을 포함한 임의의 객체를 문자열로 변환하여 출력 (str() 내장 함수 사용)  ||  | %r          | 문자열을 포함한 임의의 객체를 문자열로 변환하여 출력 (repr() 내장 함수 사용) ||  | %c          | 1글자 문자 (ex. '%c' % 'k)                                                   ||O | %d          | 10진 정수 (%5d: 5자리를 확보한 후 정수 포맷팅)                               ||  | %i          | %d와 동일                                                                    ||  | %u          | 부호 없는 정수. 음수는 양수처럼 해석함 (ex. '%u' % -12 --> '4294967284')     ||  | %o          | 8진수 정수 (ex. '%o' % 13 --> 15)                                            ||  | %x          | 16진수 정수 (소문자 표현) (ex. '%x' % 13 --> 'd')                            ||  | %X          | 16진수 정수 (대문자 표현) (ex. '%X' % 13 --> 'D')                            ||  | %e          | 부동 소수점 실수를 지수 형태로 표현 (%.2e: 2자리는 소수점 이하 자리수)  ||  | %E          | %e 와 동일 (대문자 E 표현)  ||O | %f          | 부동 소수점 실수 (%5.2f: 소수점 포함 총 5자리 확보한 후 2자리는 소수점 이하 자리수)  ||  | %g          | 부동 소수점을 편의에 따라 일반 실수 형식이나 지수 형식으로 변환 ||  | %G          | %g와 동일 (대문자 E 표현) |<jupyter_code>print("%s -- %s -- %d -- %f -- %e" % ((1, 2), [3,4,5], 5, 5.3, 101.3))
print("%3d -- %5.2f -- %.2e" % (5, 5.356, 101.3))
a = 456
print('%d -- %o -- %x -- %X' % (a, a, a, a))<jupyter_output>456 -- 710 -- 1c8 -- 1C8<jupyter_text>2-2 사전(Dictionary)을 이용한 포매팅<jupyter_code>print('%(이름)s -- %(전화번호)s' %{'이름':'홍길동', '전화번호':5284})
print('%(이름)s -- %(전화번호)s' %{'전화번호':5284, '이름':'홍길동'})
print('%(이름)s -- %(전화번호)s' %{'전화번호':5284, '이름':'홍길동', '주소':'Seoul'})<jupyter_output>홍길동 -- 5284
홍길동 -- 5284
홍길동 -- 5284<jupyter_text>2-3 새로운 포매팅 방법 (Python 3 기준) - 오프라인 강의 - 공부 필수- https://pyformat.info/- https://dojang.io/mod/page/view.php?id=997<jupyter_code>print('Hello, {0}'.format('world!'))
print('Hello, {0}'.format(100))
print('Hello, {0} {2} {1}'.format('Python', 'Script', 3.6))<jupyter_output>Hello, Python 3.6 Script<jupyter_text>![](https://dojang.io/pluginfile.php/5238/mod_page/content/1/025002.png)<jupyter_code>print('{0} {0} {1} {1}'.format('Python', 'Script'))
print('Hello, {language} {version}'.format(language='Python', version=3.6))
print('%3d' % 1)
print('{0:3d}'.format(1))
print('%03d' % 1)
print('{0:03d}'.format(1))
print('%.2f' % 3.6)
print('{0:.2f}'.format(3.6))<jupyter_output>3.60
3.60<jupyter_text>- 구구단 출력 포맷팅<jupyter_code>for i in range(2, 10):
    for j in range(1, 10):
        print("{0} x {1} = {2:2d}".format(i, j, i*j))
    print()<jupyter_output>2 x 1 =  2
2 x 2 =  4
2 x 3 =  6
2 x 4 =  8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

3 x 1 =  3
3 x 2 =  6
3 x 3 =  9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27

4 x 1 =  4
4 x 2 =  8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36

5 x 1 =  5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45

6 x 1 =  6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54

7 x 1 =  7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63

8 x 1 =  8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72

9 x 1 =  9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
{'fraction_non_alphanumeric': 0.20985208663497096, 'fraction_numerical': 0.06959852086634971, 'mean_word_length': 2.1527893422148208, 'pattern_counts': {'":': 0, '<': 32, '<?xml version=': 0, '>': 36, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 14, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '331931', 'license': 'MIT', 'n_tokens_mistral': 4591, 'n_tokens_neox': 5230, 'n_words': 1089, 'path': 'python3.6/.ipynb_checkpoints/python08-checkpoint.ipynb', 'repo_name': 'gjbr5/python-link-e-learning', 'size': '7572'}