본문 바로가기
TIL - 프로그래밍/개념, 설정

[Python] 문자열(String)

by chaemj97 2022. 2. 20.
728x90
  • Python 인코딩
    • 2.x 버전 - ASCII -> #-*- coding: utf-8 -*- (첫 줄에 명시)
    • 3.x 버전 - 유니코드 UTF -8 -> 생략 가능
    • 다른 인코딩 방식으로 처리 시 첫 줄에 작성하는 위 항목에 원하는 인코딩 방식을 지정해주면 됨

 

  • 문자열 뒤집기
s = 'Reverse this strings'

0. s = s[::-1]

(s.reverse()는 문자열에서는 동작 안 함 - reverse는 리스트에서 작용)

 

1. 리스트로 바꾸어 자리 바꾸기

N = len(s)
mid = len(s)//2
# 리스트로 바꾸어 자리 바꾸기
s_lst = list(s)
for i in range(mid):
    s_lst[i], s_lst[N-1-i] = s_lst[N-1-i], s_lst[i]

print(''.join(s_lst))

 

2. 뒷 문자열부터 추가

def myReverse2(strV):
    N = len(strV)
    result = ''
    for i in range(N-1,-1,-1):
        result += strV[i]
    return result

print(myReverse2(s))

 

  • 문자열 비교
    • == : 보이는 결과가 같은지
    • is :  id가 같은지
s1 = 'abc'
s2 = 'abc'
s3 = 'def'
s4 = s1
s5 = s1[:2] + 'c'

print(s1 == s2) # True
print(s1 is s2) # True
print(s1 == s3) # False
print(s1 is s3) # False
print(s1 == s4) # True
print(s1 is s4) # True
print(s1 == s5) # True
print(s1 is s5) # False

print(id(s1)) # 2289840528048
print(id(s2)) # 2289840528048
print(id(s3)) # 2289840583664
print(id(s4)) # 2289840528048
print(id(s5)) # 2289840890608

 

  • int()와 같은 함수 만들기
    • ord() : 문자의 아스키코드 반환
    • chr() :  아스키코드에 해당하는 문자 반환
# 문자를 숫자로 바꾸기
# '123' -> 123
def atoi(s):
    # '1' => 1 => (0*10)+1
    # '1' => 2 => (1*10)+2
    # '3' => 3 => (12*10)+3
    value = 0
    for x in s:
        # 2 => ord('2') - ord('0')
        value = value * 10 + (ord(x)-ord('0'))
    return value

s = '123'
print(s,type(s))
# 123 <class 'str'>

int_s = atoi(s)
print(int_s,type(int_s))
# 123 <class 'int'>

 

  • str()과 같은 함수 만들기
# 숫자를 문자로 바꾸기
# 123 -> '123'
def itoa(s):
    # 123%10 = > 3 => chr(ord('0')+3) == '3'

    # 음수일 경우 값을 양수로 바꾼 후 계산
    isMinus = False
    if s < 0:
        isMinus = True
        s = -s

    result = ''
    while s:
        value = s%10
        # 더하면 뒤에 붙으므로
        result = chr(value+ord('0')) + result
        s //= 10

    # 음수는 다시 앞에 - 붙이기
    if isMinus:
        result = '-' + result
    return result

# 양수
s1 = 123
print(s1,type(s1))
# 123 <class 'int'>

chr_s1 = itoa(s1)
print(chr_s1,type(chr_s1))
# 123 <class 'str'>

# 음수
s2 = -123
print(s2,type(s2))
# -123 <class 'int'>

chr_s2 = itoa(s2)
print(chr_s2,type(chr_s2))
# -123 <class 'str'>
728x90
반응형

댓글