지난번 포스팅에서는 파이썬의 자료 유형인 

 - 숫자(Number), 

 - 문자열(String), 

 - 리스트(List), 

 - 튜플(Tuple), 

 - 사전(Dictionary) 


중에서 먼저 숫자(Number)와 문자열(String)의 기본 사용법을 소개하였습니다. 


이번 포스팅에서는 지난 포스팅에 이어서 문자열에 특화되어 문자열 자료형을 다양하게 처리할 수 있는 함수인 문자열 메소드(String Methods) 에 대해서 알아보겠습니다. 


문자열 메소드를 숙지하고 있으면 동일한 목적의 문자열 전처리를 위해 직접 프로그래밍을 하는 것보다 문자열 메소드를 사용한 1~2줄의 코드면 해결되므로 업무 효율도 오르고, for loop 문을 쓰는 것보다 속도도 훨씬 빠릅니다. 


[참고]  메소드 (Method)


내장 함수(Built-in Function)와는 달리 문자열 자료형과 같이 특정 자료형이 가지고 있는 함수를 메소드(Method) 라고 합니다. 메소드는 객체 지향 프로그래밍의 기능에 대응하는 파이썬 용어입니다. 함수와 거의 동일한 의미이지만 메소드는 클래스의 멤버라는 점이 다릅니다. 



평소에 공부해놓고 '아, 문자열 메소드에 이런 기능이 있었지!' 정도는 기억해놓고 있어야 바로 찾아서 쓰기 쉽겠지요? 아래에 문자열 메소드들을 기능에 따라서 그룹핑을 해보았는데요, 저의 경우 len(), find(), lower(), upper(), lstrip(), rstrip(), split(), splitlines(), replace(), join(), zfill() 등을 종종 사용하는 편이네요. 



[ 파이썬 문자열 메소드 (String Methods in Python) ]



이번 포스팅은 https://www.tutorialspoint.com/python/python_strings.htm  사이트에 있는 영문 소개자료를 참고하여 작성하였습니다. 문자열 메소드의 기능 설명만 되어 있어서 좀더 이해하기 쉽도록 예제를 추가로 만들어보았습니다. 

expandtabs(), maketrans() 등 일부 메소드는 제가 써본적도 없고 앞으로 거의 쓸 일이 없을 것 같아서 주관적으로 판단해서 몇 개 빼고 소개하는 것도 있습니다. 


하나씩 예을 들어 살펴보겠습니다. 




1. 문자열 계산 관련 메소드 (String methods based on calculation)


len() : 문자열 길이



# len() : Returns the length of the string

>>> a = 'I Love Python'

>>> len(a)

13

 



 min(), max() : 문자열 내 문자, 혹은 숫자의 최소값, 최대값 (알파벳 순서, 숫자 순서 기반)



# max(str), min(str) : Returns the max, min alphabetical character from the string str

>>> d = 'abc'

>>> f = '123'

>>> 

>>> min(d)

'a'

>>> max(d)

'c'

>>> 

>>> min(f)

'1'

>>> max(f)

'3'

 



 count() :  문자열 안에서 매개변수로 입력한 문자열이 몇 개 들어있는지 개수를 셈 

                (begin, end 위치 설정 가능)



# count() : Counts how many times str occurs in string

>>> a = 'I Love Python'

>>> a.count('o')

2

>>> 

>>> a = 'I Love Python'

>>> a.count('o', 7, len(a)) # count(string, begin, end)

1

>>> 

>>> a.count('k') # there is no 'k' character in 'a' string

0

 





2. 문자열에 특정 문자 들어있는지 여부, 어디에 위치하고 있는지 찾아주는 메소드


  startswith() : 문자열이 매개변수로 입력한 문자열로 시작하면 True, 그렇지 않으면 False 반환



# startswith(): Determines if string or a substring of string

>>> a = 'I Love Python'

>>> a.startswith('I')

True

>>> a.startswith('I Lo')

True

>>> a.startswith('U')

False

 



  endswith() : 문자열이 매개변수로 입력한 문자열로 끝나면 True, 그렇지 않으면 False 반환



# endswith(): Determines if string or a substring of string

>>> a = 'I Love Python'

>>> a.endswith('Python')

True

>>> a.endswith('Pycham')

False

 



 find() : 문자열에 매개변수로 입력한 문자열이 있는지를 앞에서 부터 찾아 index 반환, 없으면 '-1' 반환



# find() : Search forwards, Determine if str occurs in string and return the index

>>> a = 'I Love Python'

>>> a.find('o')

3

>>> a.find('k') # if there is no string, then '-1'

-1

 



  rfind() : 문자열에 매개변수로 입력한 문자열이 있는지를 뒤에서 부터 찾아 index 반환, 없으면 '-1' 반환



# rfind() : Same as find(), but search backwards in string

>>> a = 'I Love Python'

>>> a.rfind('o')

11

 



 index() :  find()와 기능 동일하나, 매개변수로 입력한 문자열이 없으면 ValueError 발생



# index(): Same as find(), but raises an exception if str not found

>>> a = 'I Love Python'

>>> a.index('o')

3

>>> a.index('k') # ValueError: substring not found

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: substring not found

 



 rindex() : index()와 기능 동일하나, 뒤에서 부터 매개변수의 문자열이 있는지를 찾음



# rindex(): Same as index(), but search backwards in string

>>> a = 'I Love Python'

>>> a.rindex('o')

11

>>> a.rindex('k') # ValueError: substring not found

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: substring not found

 





3. 숫자, 문자 포함 여부 확인하는 메소드


  isalnum() : 문자열이 알파벳과 숫자로만 이루어졌으면 True, 그렇지 않으면 False



>>> a = 'I Love Python'

>>> d = 'abc'

>>> e = '123abc'

>>> f = '123'

>>> 

# isalnum() : Returns true if string has at least 1 character and 

#                  all characters are alphanumeric and false otherwise

>>> a.isalnum() # False

False

>>> d.isalnum() # True

True

>>> e.isalnum() # True

True

>>> f.isalnum() # True

True




  isalpha() : 문자열이 알파벳(영어, 한글 등)으로만 이루어졌으면 True, 그렇지 않으면 False



>>> a = 'I Love Python'

>>> d = 'abc'

>>> e = '123abc'

>>> f = '123'

>>> 

# isalpha() : Returns true if string has at least 1 character 

#                 and all characters are alphabetic and false otherwise

>>> a.isalpha() # False (there is space between characters)

False

>>> d.isalpha() # True

True

>>> e.isalpha() # False

False

>>> f.isalpha() # False

False




  isdigit() : 문자열이 숫자만 포함하고 있으면 True, 그렇지 않으면 False, isnumeric()과 동일



>>> a = 'I Love Python'

>>> d = 'abc'

>>> e = '123abc'

>>> f = '123'

>>> 

# isdigit() : Returns true if string contains only digits and false otherwise

>>> a.isdigit() # False 

False

>>> d.isdigit() # False

False

>>> e.isdigit() # False

False

>>> f.isdigit() # True

True




  isnumeric() : 문자열이 숫자로만 이루어져 있으면 True, 그렇지 않으면 False, isdigit()과 동일



>>> a = 'I Love Python'

>>> d = 'abc'

>>> e = '123abc'

>>> f = '123'

>>> 

# isnumeric(): Returns true if a unicode string contains only numeric characters

>>> a.isnumeric() # False

False

>>> d.isnumeric() # False

False

>>> e.isnumeric() # False

False

>>> f.isnumeric() # True

True

 



  isdecimal() : 문자열이 10진수 문자이면 True, 그렇지 않으면 False



>> a = 'I Love Python'

>>> d = 'abc'

>>> e = '123abc'

>>> f = '123'

>>> 

# isdecimal(): Returns true if a unicode string contains only decimal characters

>>> a.isdecimal() # False

False

>>> d.isdecimal() # False

False

>>> e.isdecimal() # False

False

>>> f.isdecimal() # True 

True

 





4. 대문자, 소문자 여부 확인하고 변환해주는 문자열 메소드


  islower() : 문자열이 모두 소문자로만 되어있으면 True, 그렇지 않으면 False



>>> a = 'I Love Python'

>>> g = 'i love python'

>>> h = 'I LOVE PYTHON'

>>> 

# islower(): Returns true if string has at least 1 cased character 

#            and all cased characters are in lowercase and false otherwise

>>> a.islower() # False

False

>>> g.islower() # True

True

>>> h.islower() # False

False

 



  isupper() : 문자열이 모두 대문자로만 되어있으면 True, 그렇지 않으면 False



>>> a = 'I Love Python'

>>> g = 'i love python'

>>> h = 'I LOVE PYTHON'

>>> 

# isupper(): Returns true if string has at least one cased character 

#           and all cased characters are in uppercase and false otherwise

>>> a.isupper() # False

False

>>> g.isupper() # False

False

>>> h.isupper() # True

True

 



  lower() : 문자열 내 모든 대문자를 모두 소문자(a lowercase letter)로 변환



>>> a = 'I Love Python'

>>> 

# lower(): Converts all uppercase letters in string to lowercase

>>> a.lower()

'i love python'




 upper() :  문자열 내 모든 소문자를 모두 대문자(a uppercase letter)로 변환



>>> a = 'I Love Python'

>>> 

# upper(): Converts lowercase letters in string to uppercase

>>> a.upper()

'I LOVE PYTHON'

 



 swapcase() : 문자열 내 소문자는 대문자로 변환, 대문자는 소문자로 변환



# swapcase(): Inverts case for all letters in string

>>> a = 'I Love Python'

>>> a.swapcase() # 'i lOVE pYTHON'

'i lOVE pYTHON'

>>> 

>>> g = 'i love python'

>>> g.swapcase() # 'I LOVE PYTHON' (same as upper())

'I LOVE PYTHON'

>>> 

>>> h = 'I LOVE PYTHON'

>>> h.swapcase() # 'i love python' (same as lower())

'i love python'

 



  istitle() : 문자열이 제목 형식에 맞게 대문자로 시작하고 이후는 소문자이면 True, 그렇지 않으면 False



>>> a = 'I Love Python'

>>> g = 'i love python'

>>> h = 'I LOVE PYTHON'

>>> 

# istitle(): Returns true if string is properly "titlecased" and false otherwise

>>> a.istitle() # True

True

>>> g.istitle() # False

False

>>> h.istitle() # False

False

 



 title() : 문자열을 제목 형식(titlecased)에 맞게 시작은 대문자로, 나머지는 소문자로 변환 



>>> g = 'i love python'

>>> h = 'I LOVE PYTHON'

>>> 

# title(): Returns "titlecased" version of string, that is, 

#          all words begin with uppercase and the rest are lowercase

>>> g.title() # 'I Love Python'

'I Love Python'

>>> h.title() # 'I Love Python'

'I Love Python'

 



  capitalize)=() : 문자열 내 첫번째 문자를 대문자로 변환하고, 나머지는 모두 소문자로 변환



>>> a = 'I Love Python'

>>> g = 'i love python'

>>> h = 'I LOVE PYTHON'

>>> 

# capitalize(): Capitalizes first letter of string

>>> a.capitalize() # 'I love python'

'I love python'

>>> g.capitalize() # 'I love python'

'I love python'

>>> h.capitalize() # 'I love python'

'I love python'

 





5. 공백 존재 여부 확인 및 처리하기 문자열 메소드 


 lstrip() : 문자열의 왼쪽에 있는 공백을 제거



# lstrip() : Removes all leading whitespace in string

>>> b = '      I Love Python'

>>> b.lstrip()

'I Love Python'




  rstrip() : 문자열의 오른쪽에 있는 공백을 제거



# rstrip() : Removes all trailing whitespace of string

>>> c = 'I Love Python      '

>>> c.rstrip()

'I Love Python'

 



  strip() : 문자열의 양쪽에 있는 공백을 제거



# strip() : Performs both lstrip() and rstrip() on string

>>> '     I Love Python     '.strip()

'I Love Python'

 



  isspace() : 문자열이 단지 공백(whitespace)으로만 되어있을 경우 True, 그렇지 않으면 False



# isspace(): Returns true if string contains only whitespace characters and false otherwise

>>> i = '     '

>>> j = '      I Love Python'

>>> 

>>> i.isspace() # True

True

>>> j.isspace() # False

False

 



  center(width) : 총 길이가 매개변수로 받는 문자열폭(width)만큼 되도록 공백을 추가하여 중앙 정렬



# center(): Returns a space-padded string with the original string 

#                centered to a total of width columns

>>> a = 'I Love Python'

>>> a.center(21)

'    I Love Python    '

 





6. 문자열을 나누고, 붙이고, 교체하고, 채우는 문자열 메소드 (split, join, replace, fill)


  split() : 문자열을 구분자(delimiter, separator) 기준에 따라 나누기


split()은 상당히 자주 사용하는 문자열 메소드 입니다. 



# split(): Splits string according to delimiter str (space if not provided) 

#    and returns list of substrings; split into at most num substrings if given

>>> x = 'haha, hoho, hihi'

>>> x.split(sep=',') # as a list ['haha', ' hoho', ' hihi']

['haha', ' hoho', ' hihi']




>>> ha, ho, hi = x.split(sep=',')

>>> ha

'haha'

>>> ho

' hoho'

>>> hi

' hihi'

 



>>> a = 'I Love Python'

>>> a.split(' ') # without arg 'sep='

['I', 'Love', 'Python']

>>> a.split() # default delimiter is space if not provided

['I', 'Love', 'Python'] 

 



  splitlines() : 여러개의 줄로 이루어진 문자열을 줄 별로 구분하여 리스트 생성



# splitlines(): returns a list with all the lines in string, 

#     optionally including the line breaks (if num is supplied and is true)

>>> y = 'haha, \nhoho, \nhihi'

>>> y

'haha, \nhoho, \nhihi'

>>> y.splitlines() # ['haha, ', 'hoho, ', 'hihi']

['haha, ', 'hoho, ', 'hihi']

 



 replace(old, new, max) : old 문자열을 new 문자열로 교체.  단, max 매개변수 있으면, max 개수 만큼만 교체하고 이후는 무시



# replace(old, new): Replaces all occurrences of old in string with new 

#        or at most max occurrences if max given

>>> a = 'I Love Python'

>>> a.replace('Python', 'R')

'I Love R'

>>> 

>>> 

>>> a_2 = 'I Love Python, Python, Python, Python, Python~!!!'

>>> a_2.replace('Python', 'R', 3) # str.replace(old, new, max)

'I Love R, R, R, Python, Python~!!!'




 join() :  여러개의 문자열을 구분자(separator) 문자열을 사이에 추가하여 붙이기


join()은 꽤 자주 쓰는 문자열 메소드 중의 하나입니다. 



# join(): Merges (concatenates) the string representations of elements 

#         in sequence seq into a string, with separator string

>>> mylist = ['I', 'Love', 'Python']

>>> print(mylist)

['I', 'Love', 'Python']

>>> 

>>> mystring = '_'.join(mylist)

>>> print(mystring) # 'I_Love_Python'

I_Love_Python

 



# To concatenate item in list to strings with join() method

>>> mylist_num = [1, 2, 3, 4, 5]

>>> print(mylist_num) # [1, 2, 3, 4, 5]

[1, 2, 3, 4, 5]

>>> 

>>> mylist_str = ''.join(map(str, mylist_num))

>>> print(mylist_str) # 12345

12345

>>> 

>>> '_'.join(map(str, mylist_num)) # '1_2_3_4_5'

'1_2_3_4_5'

 



 zfill(width) : 문자열을 매개변수 width만큼 길이로 만들되, 추가로 필요한 자리수만큼 '0'을 채움



# zfill(width): Returns original string leftpadded with zeros to a total of width characters; 

#      intended for numbers, zfill() retains any sign given (less one zero)

>>> f = '123'

>>> f.zfill(10)

'0000000123' 




 ljust(width[, fillchar]) : 문자열을 매개변수 width만큼 길이로 만들되, 왼쪽은 원본 문자열로 채우고, 

오른쪽에 추가로 필요한 자리수만큼 매개변수 fillchar 문자열로 채움



# ljust(): Returns a space-padded string with the original string left-justified 

#          to a total of width columns

# str.ljust(width[, fillchar])

>>> a = 'I Love Python'

>>> a.ljust(20, 'R')

'I Love PythonRRRRRRR'

 



 rjust(width[, fillchar]) : 문자열을 매개변수 width만큼 길이로 만들되, 오른쪽은 원본 문자열로 채우고, 

 왼쪽에 추가로 필요한 자리수만큼 매개변수 fillchar 문자열로 채움



# rjust(): Returns a space-padded string with the original string right-justified 

#          to a total of width columns

>>> a.rjust(20, 'R')

'RRRRRRRI Love Python'

>>> a.rjust(20, ' ')

'       I Love Python'

 



다음번 포스팅에서는 문자열의 포맷 메소드(string formatting opertor)에 대해서 알아보겠습니다. 


많은 도움 되었기를 바랍니다. 

이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요. ^^



728x90
반응형
Posted by Rfriend
,

이번 포스팅에서는 파이썬의 5가지 자료 구조, 변수 유형에 대해서 간략하게 알아보겠습니다. 


몇 년을 SAS 사용하다가 R 을 배우기 시작했을 때 R의 자료 구조가 좀 낯설었는데요, R 사용하다가 Python 배우기 시작하니 또 좀 생소하더군요. 처음엔 낯설어도 자꾸 사용하다보면 또 금새 익숙해지니 너무 부담갖지는 마시구요.


무슨 언어를 사용하던지 자료 유형(Data Type)에 대해서 정확하게 알고 있는 것이 정말, 진짜로, 억수로, 무지막지하게 중요합니다.  가장 기본이 되는 것이라서 정확하게 숙지를 하고 있어야 합니다. 


파이썬의 자료 구조, 변수 유형에는 수(Number), 문자열(String), 리스트(List), 튜플(Tuple), 사전(Dictionary)의 5가지 유형이 있습니다.  이번 포스팅에서는 수(Number)와 문자열(String)을 먼저 살펴보겠습니다. 



[ 파이썬의 자료/변수 유형 (Python's 5 Data Types, Variable Types) ]





 (1) 수 (Numbers)

: 정수(integer), 실수(real number), 복소수 (complex number)


먼저 수 (Number) 인데요, 더 세부적으로 구분해보자면 파이썬이 지원하는 수에는 정수(Integer), 실수(Real Number), 복소수(Complex Nuber) 의 3가지가 있습니다.


(1-1) 정수 (Integer)


파이썬은 메모리가 허용하는 선에서 무한대의 정수를 사용할 수 있습니다.  

type() 함수로 자료유형을 확인할 수 있습니다. 


#%% (1) Numbers # (1-1) int : signed integers


In [1]: num_int = 100


In [2]: type(num_int)

Out[2]: int 




참고로, 파이썬이 제공하는 수에 대한 산술 연산자(arithmetic operators)에는 아래의 7가지가 있습니다.  연산자(operator) 기호는 기억해두면 편할텐데요, 나누기(division), 나눗셈의 몫(floor division), 나눗셈의 나머지(modulus) 가 항상 헷갈립니다. ^^;


연산자 (operator)

 설명

예 

 +

 더하기 (addition)

 5 + 2 = 7

 -

 빼기 (subtraction)

5 - 2 = 3 

 곱하기 (multiplication)

5 * 2 = 10

 /

나누기 (division) 

 5 / 2 = 2.5

 //

나눗셈의 몫 (floor division) 

 5 // 2 = 2

 %

나눗셈의 나머지 (modulus) 

5 % 2 = 1 

 **

지수 (exponent) 

5 ** 2 = 25



파이썬은 수를 2진수, 8진수, 16진수로 변환할 수 있는 함수를 제공합니다. 참고로, 컴퓨터가 정보를 처리하는 가장 작은 단위가 '0'과 '1'로 구성된 비트(bit) 이고, 비트가 8개 모여서 바이트(byte)가 되는데요, 1 바이트로는 0 ~ 255 (2^8 -1 개) 개의 수를 표현할 수 있습니다.


아래 표에 10진수 10을 각 2진수, 8진수, 16진수로 변환해 보았습니다.


진법별로 변환해주는 함수 (function)

 접두사 (prefix)

예 

2진수(Binary number)로 변환: bin()

 0b

In [26]: bin(10)

Out[26]: '0b1010'

8진수(Octal number)로 변환: oct()

 0o

 In [27]: oct(10)

Out[27]: '0o12'

 16진수(Hexadecimal number)로 변환: hex()

 0x

 In [28]: hex(10)

Out[28]: '0xa'



(1-2) 실수 (Real Number): 부동 소수형


파이썬은 실수를 지원하기 위해 소수점이 있는 부동 소수형(floating point real values)을 제공합니다. 



# (1-2) float : floating point arithmetic

In [3]: num_float = 12.345


In [4]: type(num_float)

Out[4]: float 




파이썬이 정수는 메모리가 허용하는 한 무한대로 저장, 처리할 수 있다고 했는데요, 부동 소수형은 저장공간을 효율적으로 사용하기 위해 8 바이트만 사용해서 소수를 저장, 표현하므로 정도밀에 한계가 있습니다. 부동 소수형 수를 가지고 계산을 하다보면 끝자리 수가 미묘하게 예상했던 것과 다른 결과가 나오는 경우가 있으므로 정밀한 계산을 요구하는 경우에는 주의를 해야 합니다. 


수학에서 가장 많이 사용되는 무리수, 무한소수인 원주율(ratio of circumference of circle to its diameter ""3.141592653589793238462...)과 자연상수(The mathematical constant "e", 2.71828182845904523536...)를 파이썬의 math 모듈을 사용해서 표현해 보겠습니다. 부동 소수형으로 표현되어 자리 수가 제한되어 있음을 확인할 수 있습니다. 



In [5]: import math


In [6]: math.pi

Out[6]: 3.141592653589793


In [7]: math.e

Out[7]: 2.718281828459045 




(1-3) 복소수 (Complex Number): 실수(Real Number) + 허수(Imaginary Number: j)


복소수는 실수(real number)와 허수(imaginary number, i)로 구성된 수입니다. 고등학교 때 배워서 기억이 좀 가물가물할 수도 있는데요, (a, b는 실수, i는 허수) 형태로 표현하고, 이때 허수 i 는 인 수입니다. 


파이썬에서는 허수를 i로 표기하는 대신에 j 로 표기합니다. 



# (1-4) complex : complex numbers

In [8]: num_complex = 3 + 0.45j


In [9]: type(num_complex)

Out[9]: complex


In [10]: num_complex.real

Out[10]: 3.0


In [11]: num_complex.imag

Out[11]: 0.45




복소수도 산술연산을 할 수 있는데요, 아래에 덧셈(+) 연산 예를 들어보았습니다. 



In [12]: num_complex_2 = num_complex + (1 + 2j)


In [13]: num_complex_2

Out[13]: (4+2.45j)

 

# delete number objects

In [14]: del num_int, num_float, num_complex, num_complex_2





 (2) 문자열 (String) 


(2-1) 문자열 생성 : ' ', " ", ''' ''', """ """


파이썬이 제공하는 자료형의 두번째로는 문자들이 가지런히 늘어서 있는 집합인 문자열(String)이 있습니다. 작은 따옴표('xx')나 큰 따옴표 ("xx")로 감싸서 표현합니다.



In [14]: str_1 = 'Hello World'


In [15]: str_1

Out[24]: 'Hello World'


In [16]: type(str_1)

Out[16]: str 




줄을 바꾸어서 여러개의 줄로 문자열을 표현해야 하는 경우에는 작은 따옴표 3개('''xx''') 또는 큰 따옴표 3개(""xx""")를 이용해서 표현합니다. 가령, 여러 줄의 SQL query를 DB connect해서 사용하는 경우에 작은 따옴표 3개를 사용하면 되겠습니다.



In [17]: mysql_Query = """SELECT var1, count(*) as cnt

    ...: FROM mytable

    ...: WHERE var1 = 'aaa'

    ...: GROUP BY var1

    ...: ORDER BY var1"""


In [18]: mysql_Query

Out[18]: "SELECT var1, count(*) as cnt\n FROM mytable\n WHERE var1 = 'aaa'\n GROUP BY var1\n ORDER BY var1"

 



(2-2) 문자열 분리 (slicing of a string) : [ ], [ : ]


문자열은 순서열(sequence) 형식으로서 [ ], [ : ] 와 같은 슬라이싱 연산자(slice operator) 를 사용해서 문자열의 일부분을 분리할 수 있습니다. R 사용하다가 파이썬의 슬라이싱 사용하려면 R과 파이썬이 슬라이싱 시작하는 위치, 끝나는 위치가 달라서 무척 헷갈립니다. ^^;


'Hello World' 문자열을 가지고 Python 으로 슬라이싱 하는 것과 동일한 결과를 얻기 위해서 R 로 subset() 함수를 사용해서 문자열 분리하는 예를 아래에 비교해보았습니다.


Python 

 

In [19]: a = 'Hello World'


In [20]: print(a)

Hello World


 > # subset of string using R

> a <- c('Hello World')

> a

[1] "Hello World"

# [] and [:] : slice operator with indexes starting at 0

# in the beginning of the string

In [21]: a[1]

Out[21]: 'e'


> substr(a, 2, 2)

[1] "e" 
 

In [22]: a[1:4]

Out[22]: 'ell'


 > substr(a, 2, 4)

[1] "ell"

 

In [23]: a[1:]

Out[23]: 'ello World'


 > substr(a, 2, nchar(str))

[1] "ello World"

 

In [24]: a[10]

Out[24]: 'd'


# final character of a string : string[-1]

In [25]: a[-1]

Out[25]: 'd'


> substr(a, 11, 11)

[1] "d"


 > substr(a, nchar(str), nchar(str))

[1] "d"


Python의 경우 string[-1] 이면 제일 마지막 위치에서 첫번째 문자를 슬라이싱 해오며, string[-2]이면 제일 마지막에서 두번째 문자를 슬라이싱 해옵니다. (R에서 indexing 할 때 '-1'을 사용하면 첫번째 객체를 삭제해버립니다. 완전 당황하는 수가 있어요. 겪어본 사람은 알지요... ㅋㅋ)



[ 문자열 슬라이싱의 시작과 끝 위치: Python vs. R 비교 ]




(2-3) 문자열 합치기 (concatenation of two strings) : +



# plus (+) sign: the string concatenation operator

In [26]: a + ' I Love You'

Out[26]: 'Hello World I Love You'

 




(2-4) 문자열 반복하기 (repetition of a string): *



# asterisk(*) : the repetition operator

In [27]: a*2

Out[27]: 'Hello WorldHello World'

 



다음번 포스팅에서는 문자열(string)이 자체적으로 가지고 있는 함수인 다양한 메소드(methods)에 대해서 알아보겠습니다.


많은 도움이 되었기를 바랍니다.

이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요. ^^



728x90
반응형
Posted by Rfriend
,