Algorithm/APS
[APS] 1. 문자열(String)
개발자 뭄뭄
2022. 8. 13. 22:48
반응형
1. 컴퓨터에서의 문자표현
컴퓨터에서 문자 ‘A’는 어떻게 메모리에 저장할까?
네트워크가 발전되기 전, 미국에서는 각 지역 별로 코드체계를 정해놓고 사용했지만, 네트워크의 발전 이후 서로간 정보를 주고 받을 때 정보를 달리 해석한다는 문제가 생겼다. → 이러한 목적으로 ASCII (American Standard Code for Information Interchange)라는 문자 인코딩 표준이 제정되었다.
- 표준 아스키 코드 vs 확장 아스키코드
표준 아스키 코드 확장 아스키 코드 사용 비트 7bit 7bit 표현가능 표준 문자 표준 문자, 악센트 문자, 도형 문자, 특수 문자, 특수 기호 … 등 128개 교환 서로 다른 프로그램이나 컴퓨터 사이에 교환 가능 교환 불가 마이크로컴퓨터 하드웨어 및 소프트웨어 사이에서 세계적으로 통용된다. 프로그램이나 컴퓨터, 혹은 프린터가 해독할 수 있도록 설계되어 있어야만 올바로 해독할 수 있다.
미국 뿐만 아니라 전세계에서 컴퓨터가 발전하면서 각 국가들은 자국의 문자를 표현하기 위하여 코드체계를 만들어서 사용하게 되었다. → ASCII를 만들었을 때의 문제와 같은 문제가 국가간에 정보를 주고 받을 때 발생했다. → 다국어 처리를 위해 표준을 마련했다. 바로 유니코드
바이트 순서에 대해서 표준화하지 못하여, 유니코드의 적당한 외부 인코딩이 필요하다.
→ UTF (Unicode Transformation Format)
ex) UTF-8(in web), UTF-16(in windows, java) UTF-32(in unix)…
2. python 에서 문자열 처리
문자열
- 시퀀스 자료형(순서가 있다.) → 시퀀스 자료형에서 사용가능한 ‘인덱싱, 슬라이싱’ 연산자 사용가능.
- 메소드 : replace(), split(), isalpha(), find()
- 변경불가(immutable) : 튜플과 마찬가지로 요소값을 변경할 수 없다.
3. 문자열 연습문제
- 문자열 뒤집기
def my_swap(a): n = len(a) string_list = list(a) for i in range(n//2): string_list[i],string_list[n-1-i] = string_list[n-1-i],string_list[i] return "".join(string_list) def my_swap_2(a): n = len(a) new_string = "" for i in range (n-1,-1,-1): new_string += a[i] return new_string print(my_swap("Hello World!")) #!dlroW olleH print(my_swap_2("Hello World!")) #!dlroW olleH
- 문자열 비교
- python에서는 (>,<) 사용 시 자동적으로 아스키코드 값으로 비교한다. 만약 첫번째 문자의 아스키코드 값이 같으면, 자동으로 두번째 요소로 넘어간다.
def my_strcmp(str1, str2): if str1 < str2: return -1 # str1 이 사전순으로 앞서면 (아스키코드 값이 더 작으면) -1을 출력 elif str1 > str2: return 1 else : return 0
- 문자열 숫자를 정수로 변환하기
- int()
문자열숫자(’123’) 을 정수 (123)으로
def s_to_i(string1): # 입력받은 문자열을 아스키코드 (ord)를 이용해서 숫자로 변환한다 # 예를 들어 '123' 이 들어온 경우, 문자열은 순회 가능하므로 # 1, 2, 3이 차례로 들어온다. # ord의 차를 이용하면, 숫자를 구할 수 있다. i = 0 for x in string1: i = i*10 + ord(x) - ord('0') return i print(s_to_i('123'))
- str()
정수(123)을 문자열(’123’)으로
def i_to_s(integer): # 입력받은 정수를 아스키코드(chr)을 이용해서 문자열로 변환한다. # 예를 들어 123이란 정수가 들어온 경우, 10으로 나누고 나머지를 더하는 과정을 통해서 # 빈 문자열에 더한다. 그러면 321 이 나오게 되므로 # 역으로 뒤집는 과정을 마지막에 넣는다. i = "" while integer > 0: i += chr(ord('0') + integer%10) integer = integer//10 return i[::-1] print(i_to_s(123))
- int()
Uploaded by N2T
반응형