저번에는 String의 인덱스와 슬라이싱까지 살펴 보았는데 해당 부분이 스트링에서 가장 중요한 부분이라고 보시면 됩니다. 그리고 Numpy와 Pandas에서도 자주 사용되는 부분이니 잘 살펴보시기 바랍니다. 나중에 복습하셔도 상관없겠죠.

 이번에는 string을 다룰 떄 사용하는 각종 함수에 대해서 살펴 보도록 하겠습니다. 제 목표는 어차피 Numpy, Pandas 등의 라이브러리를 사용하는 것이기 떄문에 간단한 함수만 짚고 넘어가도록 하겠습니다. Join, Reverse 같은 함수들을 살펴 볼 텐데, String을 다룰 때 자주 사용되는 함수 입니다.

 

그러면 Coding을 시작 해 보도록 하겠습니다.

 

1. Replace

먼저 가장 자주 쓰이는 Replace 함수를 코딩 해 봤습니다. 해당 함수의 기본적인 사용법은 간단합니다.

변수.Repace("Old value","New value")

변수에서 로 바꿀 값(Old value)을 새로운 값(New value)로 치환하는 것 입니다.

 

 

 

 

그러면 다음과 같이 만약에 특수 문자나 어떤 바꾸고 싶은 값이 이전에 있을 경우에 원래 값으로 되돌릴 수가 있겠죠? replace는 주로 이럴 경우에 사용하는 함수입니다. 하지만 숫자를 주로 취급하는 저는 잘 사용하지를 않습니다 나중에 숫자랑 String이랑 마구잡이로 뒤섞인 데이터를 다뤄야 할 경우에는 이런 함수도 다뤄야 하겠지만요.

 

하지만 주의해야 할 점이 있는데 replace는 string형태에서만 작동한다는 점입니다. 위의 에러 메세지를 참고 하시면 알 수 있으실 겁니다. 나중에 학습하겠지만 여러가지 자료를 저장 할 수 있는 리스트의 경우도 내용이 String (' '로 둘러 싸여 있는 것)이 아니면 replace나 다른 함수들을 사용 할 수 없겠죠?

 

2. Split

 

문자열을 배열, list로 나눠주는 함수입니다. 글자 string을 list로 나눠주는 함수입니다. 이를 코딩하여 보면,

 

위와 같이 ()안에 아무것도 쓰지 않으면 공백(스페이스, 탭)을 기준으로 배열을 생성하고, 따로 구분기호를 주면 그것을 기준으로 배열을 생성합니다. 만약에 구분기호가 문자열 내부에 없으면 그냥 string을 통째로 리스트안에 집어 넣습니다. (여기에는 까먹고 따로 첨부하지 못했는데

 

IN string = seoulcity

IN string.split("a")

OUT ['seoulcity']

위와 같이 a로 seoulcity를 나눌 수 없기 때문에 'seoulcity'가 통쨰로 리스트 안에 들어 갑니다.

 


추가(2019.02.20) - Split option

K O R E A 스트링을 split(" " ,3) 하면 , 앞에 3글자, K O R 을 리스트에 넣고, 나머지 EA를 리스트에 넣어서 [K, O, R, EA]라는 리스트를 생성한다.  

3.  Join

split함수가 문자열을 리스트로 만들어 주는 함수였다면 join함수는 리스트를 문자열로 만들어 주는 함수입니다. 기본적인 사용법으로 그냥 문자열 사이사이에 특정 string을 입력하는 사용법도 있지만 그것보다는 주로 문자열을 리스트로 만들어주는데 사용합니다. 기본적인 사용법은 위키 피디아를 참조 하였습니다.

https://wikidocs.net/13

 

 

 

 

 기본적으로 string들 사이사이에 구분자(delimiter)를 넣어서 사용하는 방법입니다. abcd가 구분자 ','로 나뉘어 a,b,c,d가 되었음을 알 수 있습니다. 이건 csv와 같이 comma로 나뉘어진 파일로 사용하고 싶을 때 사용 할 수 있겠죠?

 그리고 아까 Join이 Split의 반대 격이라고 말씀 드렸는데 Split이 문자열을 리스트로 나눴다면 join은 리스트를 구분자를 받아서 문자를 합치는 기능을 합니다. 구분자로는 특수 기호를 넣을 수도 있지만 아예 아무것도 안 넣을 수도 있고 공백을 넣을 수도 있습니다.

공백을 넣을 경우에 life is good으로 문자열을 출력하는 것이 가능하겠죠.  

 

 

Replace와 Join외에 자주 쓰는 함수로는 Count, Index, find등이 있지만 사용법이 쉬워서 굳이 언급하지 않고 넘어가도록 하겠습니다.  (사용법은 위키피디아 참조)

 

 

 

다음부터는 파이썬의 주요 자료형인 리스트 그리고 딕셔너리 등으로 찾아오도록 하겠습니다!

 저번에는 숫자형식과 그 포맷팅에 대해서 간단하게 알아 보았습니다. 이번에는 숫자형식 다음으로 String에 대해서 짚어 보도록 하겠습니다. C언어나 다른 언어처럼 달리 실제로 String을 많이 사용하지는 않지만 파이썬은 LIST와 깊은 연관을 가지고 있기 때문에 DEEP하게 살펴보도록 한다고 이전에 숫자형에서 말씀 드렸었습니다. 그럼 이번에도 iPython과 같은 IDE를 키고 실제로 타이핑을 하면서 한 번 알아보도록 하겠습니다.

 

1. Definition and escape code

일단 문자열 자료형을 만드는 방법은 간단합니다.

" "나 ' '안에 선언 하면 되는 거죠. 하지만 's와 같이 string안에 ' 기호를 포함시켜야 할 경우가 있을 지도 모르니까, 가능하면 " "로 선언하는 것이 좋습니다. 따라서 " "로 선언하고, 줄바꿈 기호로 \n을, 그리고 tab으로 칸을 띄우고 싶을 때, \t를 사용합니다. 실제로 코딩을 한 번 해보죠.

 

 

이외에도 스트링에서 사용되는 이스케이프 코드는 인터넷에서 검색하면 바로 나오기 때문에 따로 첨부하지 않았습니다. \n과 \t중 뭔가 자주 쓰이냐 하면 당연히 \n입니다. 줄 개행이 훨씬 코드에서 많이 실 생활에서 사용되는 것을 생각하면 코드에서도 이해하기 쉽죠.

2. 문자열 연산

문자열 연산은 상당히 직관적인데. 더하기, 즉 string1이 korea string2가 fighting 으로 정의되어 있는데 string1 + string2라고 하면 당연히 koreafighting이 됩니다. 그리고 string1*100하면 koreakoreakoreakorea........해서 korea가 100개 정의되게 됩니다. 참고로 /, mod등의 기타 연산은 안 된다는 것도 알아두세요.

 

 

3. 문자열 인덱싱

매우, 매우 매우 중요합니다. string에서도 중요하고, 이 다음에 배울 list와도 관련된 부분이기 때문에 미리 제대로 공부해 두면 좋습니다. 일단 개념부터 알아 두겠습니다.

 

  string = "MyNameIs"

 

위와 같은 String을 정의 해 본다고 합시다. 그렇다면 첫 번째 index는 뭘까요? 백문이 불여 일타라고 일단 쳐봅시다.

 

 

 대문자 M "My"의 M입니다. 이 부분이 프로그램을 처음 하시는 분들이 가장 햇갈려 하는 부분 중 하나인데,  인덱스는 0부터 시작합니다. 1이 아닙니다. 그렇다면 -1은 뭘까요. 음, 눈치 빠르신 분들, 그리고 프로그래밍 좀 하시는 분들은 이미 아시겠지만 문자열의 끝부분을 가리키는 것입니다. 그리고 [-2] [-3] [-4]는 여기 나오진 않았지만 끝에서부터 첫부분까지 거꾸로 indexing하는 것입니다.

 조금 햇갈리실 수도 있지만 몇 번 키보드로 직접 타이핑 하시다 보면 금방 이해 하실 수 있으실 거라고 생각합니다. 저도 그랬으니까요. 문제 없습니다! 

 

4. 문자열 슬라이싱

 이 부분은 파이썬 만의 특징이자 장점인데 저는 C언어를 조금 핥다 시피 하면서 파이썬으로 넘어온터라 정말 놀라웠고 혁신(?)적인 언어라고 생각했습니다. 문자열을 인덱스로 슬라이싱 하다니! 어떻게 프로그래밍 언어에 이런 짓을 할 생각을 했지? 라면서요. 사족은 접고. 본격적으로 들어가면,

 문자열 슬라이싱은 말 그대로 문자열을 자르는 겁니다. 예를 들어서, 앞의 MyNameIs라는 문자열 앞의 [2]인덱스 앞을 자르고 싶다, 하면 그렇게 할 수 있고, [2]부터 [5]까지 자르고 싶다 하면, 그렇게 할 수도 있습니다. 그러면 어떻게 그렇게 할까? 는 코딩 하면서 보면 되겠습니다.

 

 

 

[3]번 index전까지 자르고 출력해 보고 싶다. 하면 [0:2]이렇게 쓰면 되는데, 이건 0 에서 2즉, 3번 전까지를 의미합니다. 반면에 :는 모든 string을 의미 합니다. 따라서 [0:] 이렇게 쓰면 0번째에서 남은 모든 string을 의미하게 되어 모든 string을 출력하게 되겠죠. 또한 슬라이싱은 index에서 쓸 수 있는 것을 모두 쓸 수 있기 때문에 -1, -2, -3도 모두 쓸 수 있습니다. 따라서 [4:-1]은 4번째인 m부터 -1번째 전인 I까지를 출력하게 되겠죠.

 

이제 남은 것은 문자열 함수인데, 해당 부분은 문자열에서만 사용하고 다른 부분에서는 그렇게 중요하게 사용되지 않습니다. 하지만 이 역시 가볍게 파이썬 언어에서 가볍게 다뤄서는 안 될 주제이기 때문에 별도의 테마에서 다루도록 하겠습니다.

 

 

 

 

+ Recent posts