Algorithm_05

Jingi·2024년 2월 5일

Python

목록 보기
14/32
post-thumbnail

문자열


문자의 표현

컴퓨터에서의 문자 표현

  • 글자 A를 저장하기 위해 임의의 비트로 변경해서 표현
  • 영어의 경우 대소문자를 포함해 6비트면 모두 표현 가능
  • 초기에는 각 지역 별로 코드체계를 다르게 사용 → 이후 이를 해결하기 위해 표준 인코딩인 ASCII가 생김
  • 확장 아스키 :표준 문자 이외의 악센트 문자, 도형 문자, 특수 문자, 특수 기호 등 부가적인 문자를 128개 추가할 수 있게 하는 부호
    • 컴퓨터 생산자와 소프트웨어 개발자가 여러 가지 다양한 문자에 할당할 수 있도록 하고 있다.
  • 미국 이외에도 다양한 나라에서 컴퓨터가 발전했고, 각 나라별로 코드체계가 발전했고 이를 처리하기 위해 유니코드가 생성

유니코드

  • UCS-2
  • UCS-4
  • 유니코드를 저장하는 변수의 크기를 정의했지만 바이트 순서에 대해서 표준화 X
  • 각각을 다르게 구현해야 했기에 적당한 외부 인코딩 필요

유니코드 인코딩

  • UTF-8
    • MIN: 8bit, MAX: 32bit(1 Byte * 4)
  • UTF-16
    • MIN: 16bit, MAX: 32bit(2 Byte * 2)
  • UTF-32
    • MIN: 32bit, MAX: 32bit(4 Byte * 1)

Python 인코딩

  • 2.x 버전 - ASCII -> #-- coding:utf-8-- (첫 줄 명시)
  • 3.x 버전 - 유니코드 UTF-8

문자열의 분류

[출처]https://velog.io/@yun12343/Algorithm-String-0217

C언어에서 문자열 처리

  • 문자열은 문자들의 배열 형태로 구현된 응용 자료형
  • 문자배열에 문자열을 저장할 때는 항상 마지막 끝을 표시하는 널문자를 넣어야 한다.
    • char ary [] ={'a','b','\n'}; Or char ary[] = "ab";
  • 문자열 처리에 필요한 연산을 함수 형태로 제공
    • strlen(), strcmp(), strcpy()

Java에서의 문자열 처리

  • 문자열 데이터를 저장, 처리하는 클래스 제공
  • String 클래스 사용
    • String str ="abc"; Or String str = new String("abc")
  • 문자열 처리에 필요한 연산을 연산자, 메소드 형태로 제공
    • +, length(), replace(), split(), substring()

Python에서의 문자열 처리

  • char 타입 없음
  • 텍스트 데이터의 취급방법이 통일
  • 문자열 기호
    • 문자열 + 문자열 : 이어 붙여주는 역할
    • 문자열 * 수 : 수만큼 문자열이 반복
  • 문자열은 시퀀스 자료형으로 분류되고, 시퀀스 자료형에서 사용할 수 있는 인덱싱, 슬라이싱 연산들을 사용가능
  • 제공 메소드
    • replace(), split(), isalpha(), find()
  • 요소 값 변경이 불가

C, JAVA, Python 차이점

CJavaPython
아스키 코드로 저장유니코드(UTF16, 2byte)로 저장유니코드(UTF8)로 저장
char * name = "홍길동";
int count = strlen(name); printf("%d", count) # 6
String name = "홍길동"; System.out.printlen(name.length()); # 3name = "홍길동"
print(len(name)) # 3

문자열 비교

  • c strcmp() 함수를 제공
  • Java에서는 equals() 메소드를 제공한다
    • 문자열 비교에서 == 연산은 메모리 참조가 같은지를 묻는 것이다.
  • 파이썬에서는 == 연산자와 is 연산자가 제공한다
    • == 연산자는 내부적으로 특수 메서드 eq()를 호출
      Ex) C_language
int my_strcmp(const char *str1. const char *str)
{
	int i = 0;
    while(str[i] != '\n)
    {
    	if(str[i] != str2[i]) break;
        i++;
    }
    return (str1[i] - str2[i]);
}

문자열 숫자를 정수로 변환하기

CjavaPython
atoi()
itoa() # 역함수
parse → Integer.parselnt(String)
toString() # 역함수
숫자와 문자변환 함수를 제공
def atoi(s):
	i = 0
    for x in s:
    	i = i*10 + ord(x)-ord('0')
    return i
s = '123'
a = atoi(s)
print(a+1)

패턴매칭

profile
데이터 분석에서 백엔드까지...

0개의 댓글