# 문자열 객체를 생성
emptyString = ''
print(len(emptyString))
결과)0
# 문자열 객체 결합string1 = 'pine'string2 = 'apple'strings = string1 + string2print(strings)
결과)pineapple
# 문자열 객체는 str 객체이다.fruitName = 'apple'print(type(fruitName))
결과)<class 'str'>
# 시작 위치부터 두 개 요소를 추출
fruitName = 'apple'print(fruitName[:2])
결과)ap
# 시작 요소 부터 2개씩 추출fruitName = 'watermelon'print(fruitName[::2])
결과)wtreo
# 시작 요소 부터 마지막 요소 에서 5개를 제외한 요소까지 추출fruitName = 'watermelon'print(fruitName[:-5:])
결과)water
# 슬라이스 파라미터의 의미 (1st: 시작, 2nd: 끝, 3rd: 건너뛰기)s = 'banana'print(s[1:6:2])
결과)aaa
# 2nd 파라미터는 끝 위치를 지정하므로 건너뛰기도 끝 위치 내에서만 작동한다.s = 'banana'print(s[1:5:2])
결과)aa
# 2nd 파라미터가 무효한 값이면 유효한 값으로 작동한다.
s = 'banana'print(s[1:100])
결과)anana
# 문자열 뒤집기s = 'hello'print(s[::-1])
결과)olleh
# -1 트릭이 아닌 for - loop을 이용한 문자열 뒤집기
nums = [1, 2, 3, 4, 5]
reverse_nums = []
for idx in range(len(nums), 0, -1):
reverse_nums.append(nums[idx])
print(reverse_nums)
# 결과
[5, 4, 3, 2, 1]
# 문자열이 대상의 요소인지 아닌지 리턴한다.
l = ['a', 'b', 'c']
print(str('a' in l))
결과)
True
# 중첩 리스트까지 체크하지는 않는다.
sl = ['d', 'e', 'f']
l = ['a', 'b', 'c', sl]print(str('f' in l))
결과)
False
# 멤버쉽 체크 대상을 명확하게 지정하면 요소 체크가 가능하다.
sl = ['d', 'e', 'f']
l = ['a', 'b', 'c', sl]
print(str('f' in l[3]))
결과)
True
# 스트링에 대한 인덱스 읽어오기
s = 'hello'
print (s[-1:])
결과)
o
# 스트링에 대한 인덱스 할당은 가능하지 않다.
s = 'hello'
s[-1:] = 'y'
결과)
TypeError: 'str' object does not support item assignment
# 할당 대신에 읽어내어 원하는 형태를 더해준다.
s = 'hello'
print(s[:-1] + 'y')
결과)
helly
# split() 메쏘드
s = 'pine_apple'parts = s.split('_')print(parts)
결과)['pine', 'apple'] # split() 메쏘드는 리스트를 리턴한다.
# '/' 구분자의 사용s = 'super/man'parts = s.split('/')print(parts)
결과)['super', 'man']
# join() 메쏘드s = 'super/man'parts = s.split('/')original_s = '/'.join(parts)print(original_s)
결과)super/man
# 매우 자주 사용되는 리스트를 스트링으로 변환하는 트릭l = ['I am', ' a list']s = ''.join(l)print(s)print(type(s))결과)I am a list<class 'str'>
# strip() 메쏘드의 사용 #1
s = ' superman 'sStriped = s.strip()print(sStriped)
결과)superman
# strip() 메쏘드의 사용 #2
s = '#### superman'sStriped = s.strip('# ')print(sStriped)
결과)superman
# 문자열 포맷팅을 신경쓰지 않고 보이는 그대로 출력
s = '''\this is astring line andmany others'''
print(s)
결과)this is astring line andmany others
# 출력간에 개행이 아닌 원하는 세퍼레이터 넣기for i in range(1, 11):print(i, end=' ')
결과)1 2 3 4 5 6 7 8 9 10
# Strings with escape characters
# - Escape characters - special characters in a string that means something else
# - Most common escape characters
# - \n: line termiator
# - \t: hoprizontal tab
# - \': literal single quote
# - \": literal double quote
s = "this is a string with no escape characters"
print(s)
s1 = "here is a very long string \nthat contains multiple lines\nusing escape characters"
print(s1)
# Output:
this is a string with no escape characters
here is a very long string
that contains multiple lines
using escape characters
# Unicode
# - Encoding system for each character
# - Each character has a corresponding integer (code point)
# A is 65
# Z is 90
# a is 97
# z is 122
# γ is 947 (3b3)
# Use ord funtion to get code point
# Get character of code point with chr
print(ord('γ'))
print(chr(947))
test_string = '?!?!?!A HIDDEN TEST STRING!!?!'
result1 = test_string.rstrip('?!')
result2 = result1.lower()
result3 = result2.replace('t', 'T')
counted_T = result3.count('T')
print(counted_T)
method_chaining_result = test_string.rstrip('?!').lower().replace('t', 'T').count('T')
print(method_chaining_result)
# 결과
3
3
### List를 String으로 바꾸는 방법
def main():
# 방법 1
ls = ['we', 'are', 'hero']
print(ls, end=' ') ; print('->', end=' ') ; print(' '.join(ls))
print('\t')
# 방법 2
ln = [1, 2, 3]
print(ln, end=' ') ; print('->', end=' ') ; print(' '.join(map(str, ln)))
print('\t')
# 방법 3
ln = [1, 'test', 3]
print(ln, end=' ') ; print('->', end=' ') ; print(' '.join(map(str, ln)))
print('\t')
# 방법 4
lw = ['Wow', 'very', 'nice', 100]
strs = ''
for el in lw:
strs += str(el) + ' '
print(lw, end=' ') ; print('->', end=' ') ; print(strs.rstrip())
pass
if __name__ == '__main__':
main()
# 결과
['we', 'are', 'hero'] -> we are hero
[1, 2, 3] -> 1 2 3
[1, 'test', 3] -> 1 test 3
['Wow', 'very', 'nice', 100] -> Wow very nice 100
# 요소 타입이 다른 리스트를 string 변환하고
# 특정 요소만 제거
non_homogeneous_list = [1, None, '2', None, 3]
ret = [n for n in non_homogeneous_list if n != None]
string_output = '/'.join(map(str, ret))
print(non_homogeneous_list, end=' ')
print('->', end=' ')
print(string_output)
# 결과
[1, None, '2', None, 3] -> 1/2/3
# Avoid using start, end, and stride together
#
# somelist[start:end:stride]
# - start: inclusive index
# - end: exclusive index
# - stride: index interval
# 복잡한 슬라이싱을 간결하게 사용하려면
# 스트라이드를 먼저 적용 후, 결과에 대해 슬라이스를 적용하자.
# think of two operations
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'white']
stride_by_two = colors[::2]
print(stride_by_two)
extract = stride_by_two[1:-1]
print(extract)
# 결과
['red', 'yellow', 'blue', 'white']
['yellow', 'blue']
# Advanced string
nums: list[int] = [1, 2, 3]
text: str = 'hello world'
x = text.find('o')
print(x)
if text.endswith('d'):print("True")
if (text[-1] == 'd'): print("True")
# 결과
4
True
True
# slice
fruits = ['apple', 'banana', 'cherry']
fruits[2:] = 'melon'
print(fruits) # 이것은 의도한 것이 아님
fruits[2:] = ['melon'] # 이것이 의도한 것
print(fruits)
# Output:
['apple', 'banana', 'm', 'e', 'l', 'o', 'n']
['apple', 'banana', 'melon']
generated_list = ['9', ' ',
'2', '2', '3', ' ',
'3', '7', '2', ' ',
'0', '3', '6', ' ',
'8', '5', '4', ' ',
'7', '7', '5', ' ',
'8', '0', '7']
values = "".join(generated_list)
print(values)
values_list = values.split()
print(values_list)
# Output:
9 223 372 036 854 775 807
['9', '223', '372', '036', '854', '775', '807']
댓글 영역