티스토리 뷰

Basic

파이썬 String

nickas 2020. 4. 11. 20:31

String 변수 만들기

>>> a = ''  # 빈 string 만들기
>>> a
''
>>> type(a)
str
>>> b = str()
>>> b
''
>>> type(b)
str

>>> a = 'String'
>>> a
'String'
>>> type(a)
str

숫자로 만들어진 StringInteger가 아님

>>> a = '1'
>>> a
'1'
>>> type(a)
str

>>> b = 1
>>> b
1  # (주의) ''(작은 따옴표)가 없으면 integer 임
>>> type(b)
int

Apostrophe 사용하기

>>> a = "String's"  # Apostrophe를 사용하기 위해서는 큰 따옴표를 사용.
>>> a
"String's"

String 변수를 만들 때 큰 따옴표(“”)와 작은 따옴표(‘’) 둘 중 아무거나 사용해도 상관 없으나 PEP8 권고 사항에서는 큰 따옴표를 사용하라고 함.

그러나 아래와 같이 문자열 안에 큰 따옴표를 사용해야 할 경우는 작은 따옴표를 사용

>>> a = 'I told "I like you"'
>>> a
'I told "I like you"'

>>> a = "I told \"I like you\""  # \(backslash)를 사용하면 escape 됨
>>> 'I told "I like you"'

Escape 문자 사용하기

>>> a = 'String\ntab\t'  # Escape 문자 사용하기
>>> a
'String\ntab\ttab'
>>> print(a)  # 내장 IDE에서는 escape 문자를 처리하지 못하기 때문에 print() 사용
String
tab    tab

multiline 사용하기

>>> a = """multiline
multiline 
multiline"""
>>> a
'multiline\nmultiline\nmultiline'
>>> print(a)
multiline
multiline
multiline

>>> b = '''multiline
multiline
multiline'''
>>> print(b)
multiline
multiline
multiline

mulitline을 사용하는 예시 중 하나는 HTML 태그를 변수에 저장하기 위함.

>>> a = """<html>
<body>
HTML code
</body>
</html>"""

Raw string 사용하기

>>> a = r'String\ntab\t'
>>> a
'String\ntab\t'

String 연산하기

>>> a = 'Ham'
>>> b = 'burger'
>>> a + b  # Concatenate
'Hamburger'

>>> c = 1
>>> a + b + c
TypeError: can only concatenate str (not "int") to str

>>> a * 3  # Repeat
'HamHamHam'

>>> a = "I" ' like' " hamburger"  # 이렇게 사용할 수 있으나 잘 사용하지 않음(가독성이 떨어지니까 ㅋ)
>>> a
>>> 'I like hamburger

String 변수는 다른 타입(예: Integer)의 변수와 연산될 수 없음

아래와 같이 형 변환을 하여 연산

>>> s = '42'
>>> i = 1
>>> int(s) + i
43
>>> s = str(i)
'421'

String indexing and slicing

Indexing

>>> a = 'Hello'
>>> a[0]  # []을 사용하여 Indexing
'H'
>>> a[1]
'e'
>>> a[-1]
'o'
>>> a[-2]
'l'

첫 글자부터 indexing하여 가져 올려면 0부터 시작하고 마지막 글자부터 가져 올려면 -1부터 시작함 .

Slicing

>>> a = 'Hamburger'
>>> a[:]    # 모든 글자 포함
'Hamburger'
>>> a[:3]   # 앞 3글자만 포함
'Ham'
>>> a[3:]   # 앞 3글자 제외
'burger'
>>> a[1:]   # 첫 글자 제외
'amburger'
>>> a[:-1]  # 마지막 글자 제외
'Hamburge'
>>> a[1:3]
'am'
>>> a[1:-1] # 첫 글자와 마지막 글자를 제외
'amburge'
>>> a[0:-1] # 마지막 글자 제외
'Hamburge]

[start:end] 이와 같이 처음 자를 곳과 마지막으로 자를 곳을 지정.
[strat:] 마지막 자를 곳을 지정하지 않으면 문자열 마지막을 의미.
[:end] 처음 자를 곳을 지정하지 않으면 문자열 처음(0)을 의미.
[0:-1] 0은 문자열 첫 문자 앞을 의미하고, -1은 문자열 마지막 문자 앞을 의미.

[start:end:step] 이와 같이 step을 지정하여 지정한 숫자 만큼 건너뛰고 문자를 가져 올 수 있음.

>>> a = 'sliceofspam'
>>> a[1:-1:2]
'lcosa'
>>> a[::2]
'siefpm'
>>> a[::1]
'sliceofspam'
>>> a[::-1]  # reversing
'mapsfoecils'
>>> a[5:1:-1]
'oeci'

a[5:1:-1]의 경우 -1로 인해서 slicing을 거꾸로 함. 즉 5번 부터 거꾸로 4글자를 가져옴.(예를들어 a[1:5] 같은 경우 1번 부터 시작하여 4글자를 가져옴.). 헷갈림 ㅋ

slice() 사용

>>> 'spam'[slice(1, 3)]
'pa'
>>> 'sapm'[slice(None, None, -1)]
'maps'

String formatting

String formatting expressions

'...%s...' % (값) 형식을 사용.

>>> a = 'hamburger'
>>> 'I like a %s' % a  # %s는 string을 의미
'I like a hamburger'

%d는 Decimal을 의미하고 숫자 관련 출력 형식을 조절할 수 있음.

>>> x = 1234
>>> 'integers: %d, %06d' % (x, x)
'integers: 1234, 001234'

Dictionary-Based formatting expressions

>>> '%(qty)d more %(food)s' % {'qty': 1, 'food': 'spam'}
'1 more spam'

String formatting method call

'...{}...'.format(값) 형식을 사용.

# 위치에 따른 치환
>>> a = 'hamburger'
>>> b = 'sandwich'
>>> 'I like a {} and {}'.format(a, b)
'I like a hamburger and sandwich'
>>> 'I like a {0} and {1}'.format(a, b)
'I like a hamburger and sandwich'
>>> 'I like a {1} and {0}'.format(a, b)
'I like a sandwich and hamburger'

# 키워드 치환
>>> template = 'I like a {hamburger} and {sandwich}'
>>> template.format(hamburger='Cheese burger', sandwich='Ham sandwich'
'I like a Cheese burger and Ham sandwich'

# 위 두개 동시 사용
>>> template = 'I like a {0} and {sandwich}'
>>> template.format('Cheese burger', sandwich='Ham sandwich')
'I like a Cheese burger and Ham sandwich'

f-string formatting

파이썬3.6 부터 지원.
위의 formatting 방식들과 비교 했을 때 가독성이 뛰어남.

string formatting

>>> a = 'hamburger'
>>> b = 'sandwich'
>>> f'I like a {a} and {b}'
'I like a hamburger and sandwich'
>>> f'I like a {b} and {a}'
'I like a sandwich and hamburger'

Dictionary 방식

>>> food = {'hamburger': 'Cheese burger', 'sandwich': 'Ham sandwich'}
>>> f'I like a {food['hamburger']} and {food['sandwich'])'
'I like a Cheese burger and Ham sandwich'

multiline

>>> name = 'John Doe'
>>> age = 32
>>> occupation = 'software engineer'
>>> msg = (
f'Name: {name}\n'
f'Age: {age}\n'
f'Occupation: {occupation}'
)
>>> print(msg)
Name: John Doe
Age: 32
Occupation: software engineer

calling function

>>> def add(x, y):
        return x + y
>>> a = 3
>>> b = 4
>>> f'{a} + {b} = {add(a, b)}'
'3 + 4 = 7'

숫자 길이

>>> a = 123
>>> f'{a}, {a:04}, {a:05}'
'123, 0123, 00123'

들여쓰기

기본으로 왼쪽 열에 맞춤이고 설정을 할 수 있음.

>>> a = 123
>>> f'{a:>10}'
'       123'

String 메서드

a = 'string'를 선언 시 변수 astr() 클래스의 인스턴스가 되기 때문에 str() 클래스의 메서드를 사용할 수 있음.

 

2020/04/05 - [Basic] - 변수

 

변수

변수 선언 파이썬은 아래와 같이 변수 선언 >>> a = 1 # int 형 선언 >>> type(a) # type() 빌트인 함수를 사용하여 형 확인 int >>> a 1 >>> a = '1' # ''를 사용하면 str 형이 선언 >>> type(a) str >>> a '1'..

python-world.tistory.com

.find()

문자열에서 주어진 값의 인덱스를 반환. (예: hello 같이 l이 두개 인 경우 처음 인덱스를 반환). 없으면 -1을 반환.

>>> a = 'hello'
>>> a.find('he')
1
>>> a.find('o')
4
>>> a = 'String'
>>> a.find('St')

>>> a = '  String  '
>>> a.rstrip()
'  String'
>>> a.lstrip()
'String  '
>>> a.strip()
'String'
>>> a
'  String  '

.strip()

공백을 제거하여 반환.

>>> a = '  String  '
>>> a.rstrip()
'  String'
>>> a.lstrip()
'String  '
>>> a.strip()
'String'
>>> a
'  String  '

.rstrip()는 오르쪽 공백만 제거.
.lstrip()는 왼쪽 공백만 제거.
.strip()는 양쪽 공백을 제거.

.replace()

문자열을 주어진 값으로 변환하여 반환.

>>> a = 'String....String....String'
>>> a.replace('St', 'b')  # 전체를 변환
'bring....bring....bring'
>>> a.replace('St', 'b', 1)  # 처음 하나만 변환
'bring....String....String'
>>> a
'String....String....String'

.join()

주어진 값을 구분자로 사용하여 list안의 값들을 하나의 문자열로 합친 후 반환

>>> ','.join(['eggs', 'sausage', 'ham', 'toast'])
'eggs,sausage,ham,toast'

.split()

주어진 값을 구분자로 사용하여 하나의 문자열을 list로 분리 후 반환

>>> a = 'eggs,sausage,ham,toast'
>>> a.split(',')
['eggs', 'sausage', 'ham', 'toast']

.isdigit()

String 변수가 1 같은 숫자 이면 True 반환, 아니면 False 반환

>>> a = '1'
>>> a.isdigit()
True

>>> a = 'String'
>>> a.isdigit()
False

.isalpha()

String 변수가 abc 같은 문자 이면 True 반환. 아니면 False 반환

>>> a = 'String'
>>> a.isalpha()
True

>>> a = '1'
>>> a.isalpha()
False

.upper()

문자열을 대문자로 반환

>>> a = 'string'
>>> a.upper()
'STRING'

.lower()

문자열을 소문자로 반환

>>> a = 'STRING'
>>> a.lower()
'string'

.startswith()

문자열이 주어진 값으로 시작하면 True 반환. 아니면 False 반환.

>>> a = 'String'
>>> a.startswith('S')
True
>>> a.startswith('s')
False

.endswith()

문자열이 주어진 값으로 끝나면 True 반환. 아니면 False 반환

>>> a = 'String'
>>> a.endswith('ng')
True

더 알아보기

파이썬3부터 string은 Unicode임.
String은 불변(변경할 수 없음) 타입임. 예를들어 .replace() 메서드로 원하는 값을 변경 시 원래의 문자열은 변경되지 않고 변경된 형태의 문자열이 반환됨. 즉 변경된 문자열을 사용하고 싶으면 별도의 변수에 저장.

'Basic' 카테고리의 다른 글

Set  (0) 2020.04.25
파이썬 Tuple  (0) 2020.04.19
파이썬 Dictionary  (0) 2020.04.19
파이썬 List  (0) 2020.04.12
파이썬 변수  (0) 2020.04.05
최근에 올라온 글
글 보관함