파이썬 문자열 쪼개기 - paisseon munjayeol jjogaegi

특정 문자로 문자열 나누기

str = "동해물과 백두산이 마르고"
result = str.split()
print(result)

# ['동해물과', '백두산이', '마르고']

문자열을 자를 땐 split 메서드를 사용하면 됩니다. 띄어쓰기로 문자열을 나누고 싶을 땐 split그대로 사용하면 되고 ', '나 ':' 등 다양한 문자로 나누고 싶을 땐 해당 문자를 전달해주면 됩니다. 반환 값은 리스트 형식입니다!

str = "동해물과:백두산이:마르고"
result = str.split(':')
print(result)

# ['동해물과', '백두산이', '마르고']

문자열 바꾸기

str = 'Hello, world!'
str[7] = 'k'

# TypeError                                 Traceback (most recent call last)
# <ipython-input-40-8bebd457364d> in <module>
#      1 str = 'Hello, world!'
# ----> 2 str[7] = 'k'

# TypeError: 'str' object does not support item assignment

위와 같이 문자열의 바꾸고 싶은 부분을 바꾸게 되면 에러가 발생합니다.

만약 바꾸고 싶은 문자를 알고 있는 상태라면 replace() 메서드를 활용할 수 있습니다.

a = "Life is too short"
a.replace("Life", "Your leg")
'Your leg is too short'

그렇지만 바꾸고 싶은 문자는 모르지만 위치를 알고 있는 경우 문자열을 리스트로 변환한 뒤 수정해줘야 합니다.

a = 'Hello, world'
new = list(a)
new[1] = 'a'
''.join(new)

# 'Hallo, world'

혹은

a = 'Hello, world'
b = a[:1] + 'a' + a[2:]
b

# 'Hallo, world'

두 방법 모두 생각보다 귀찮은 작업입니다 ㅠ 속도는 두 번째가 더 빠르니 익숙해지는 수밖에 없겠네요

조회수 45878회

python split

소스코드

s = "hello python!"
s.split()

위 코드에서 s.split()하면 공백 기준으로 ["hello", "python!"]로 저장되잖아요? 저는 대신에 ['h', 'e', 'l', ..., '!']이런식으로 철자 하나씩 끊어서 저장하고 싶은데 이럴 때는 어떻게 해야되나요?

Ruby에서는 str.split(//)으로 하면 됐는데 python에서는 안먹네요

  • 로그아웃 60 points2016-02-23 12:41:27에 작성됨

파이썬 문자열 쪼개기 - paisseon munjayeol jjogaegi

    1 답변

    답변을 하려면 로그인이 필요합니다.

    Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

    (ಠ_ಠ)

    (ಠ‿ಠ)

    ᕕ( ᐛ )ᕗ 로그인이 필요합니다

    Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.

    안녕하세요. BlockDMask 입니다.
    오늘 알아볼 파이썬 함수는 split 함수 입니다. 문자열을 이쁘게 나눠서 리스트로 만들때 사용하는 함수 입니다.
    한번 알아보도록 하겠습니다.

    <목차>1. split 함수?2. split 함수 예제


    함수의 모양

    문자열.split()

    문자열.split('구분자')

    문자열.split('구분자', 분할횟수)

    문자열.split(sep='구분자', maxsplit=분할횟수)

    이런식의 모양들이 있습니다. 제일 마지막 것이 제일 정확합니다.

    문자열.split() 함수는 문자열을 일정한 규칙으로 잘라서 리스트로 만들어 주는 함수입니다.

    좀더 정확하게 말하자면

    문자열.split(sep, maxsplit) 함수는 문자열을 maxsplit 횟수만큼 sep의 구분자를 기준으로 문자열을 구분하여 잘라서 리스트로 만들어 줍니다.

    - sep 파라미터
    해당 파라미터의 기본값은 none이며, 이때 동작은 띄어쓰기, 엔터를 구분자로 하여 문자열을 자릅니다.
    문자열.split(sep=',') 이라 한다면 문자열에서 "," 를 기준으로 자르게 됩니다.
    sep은 생략하고 문자열.split(',')으로 사용해도 무방합니다.

    - maxsplit 파라미터
    해당 파라미터의 기본값은 -1 이며, 이때 동작은 제한없이 자를 수 있을 때 까지 문자열 전체를 자릅니다.
    문자열.split(maxsplit=1) 이라 하면, 문자열을 1번만 자르게 됩니다.
    역시 maxsplit 를 생략이 가능하지만 앞에 sep 파라미터가 있어야지만 가능합니다.
    문자열.split(1) 불가능
    문자열.split(',', 1) 가능
    문자열.split(maxsplit=1) 가능

    2. 파이썬 split 함수 예제


    2-1) split 함수 예제 1

    = "a b c d e f g"

    print(f's         : {s}')

    = s.split()

    print(f's.split() : {r}')

    cs

    파이썬 문자열 쪼개기 - paisseon munjayeol jjogaegi
    파이썬 split 예제1

    파라미터를 아무것도 사용하지 않고 문자열.split() 를 사용하게 되면 위 예제와 같이 띄어쓰기, 엔터를 구분하여 문자열을 나누게 됩니다.

    또한, maxsplit 파라미터도 정해주지 않았기 때문에 나눌 수 있을때 까지 나누게 된 것을 볼 수 있습니다.

    2-2) split 함수 예제 2

    = "aa.bb.cc.dd.ee.ff.gg"

    print(f's                : {s}')

    r0 = s.split()

    r1 = s.split('.')

    r2 = s.split(sep='.')

    print(f"s.split()        : {r0}")

    print(f"s.split('.')     : {r1}")

    print(f"s.split(sep='.') : {r2}")

    cs

    파이썬 문자열 쪼개기 - paisseon munjayeol jjogaegi
    파이썬 split 에제 sep 파라미터

    띄어쓰기가 없는 문자열 "aa.bb.cc.dd.ee.ff.gg"을 기준으로 나누어 보았습니다.

    - r0 : 문자열.split()
    문자열에서 띄어쓰기, 엔터를 기준으로 문자열을 나누어 리스트로 바꾸라 하였지만
    문자열에는 띄어쓰기도 엔터도 없기 때문에 문자열이 그대로 리스트로 바뀌어 ['aa.bb.cc.dd.ee.ff.gg'] 가 된 것을 알 수 있습니다.
    그렇게 길이가 1인 리스트가 만들어진 것 입니다.

    - r1 : 문자열.split('.'), r2 : 문자열.split(sep='.')
    문자열에서 sep 파라미터를 '.'로 설정해서 split 함수를 호출했습니다.
    "aa.bb.cc.dd.ee.ff.gg"의 문자열이기 때문에 '.'을 기준으로 잘 나누어 져서 리스트에 들어간 것을 볼 수 있습니다.
    ['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'] 인 길이가 7인 리스트가 만들어진것을 볼 수 있습니다.

    2-3) split 함수 예제 3

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    = "aa.bb.cc.BlockDMask.ee.ff.gg.python.example"

    print(f'{s}')

    r0 = s.split()

    r1 = s.split('.'3)

    r2 = s.split(sep='.', maxsplit=3)

    r3 = s.split('.', maxsplit=3)

    print(f"\ns.split()\n{r0}")

    print(f"\ns.split('.', 3)\n{r1}")

    print(f"\ns.split(sep='.', maxsplit=3)\n{r2}")

    print(f"\ns.split('.', maxsplit=3)\n{r3}")

    cs

    파이썬 문자열 쪼개기 - paisseon munjayeol jjogaegi
    파이썬 split 예제 maxsplit 파라미터

    띄어쓰기가 없는 문자열 s = "aa.bb.cc.BlockDMask.ee.ff.gg.python.example"을 만들었습니다.

    해당 문자열을 '.' 구분자를 이용해서 나누되, maxsplit 파라미터를 이용해서 나누는 횟수를 제한해 보았습니다.

    - 문자열.split('.', 3)
    - 문자열.split(sep='.', 3)
    - 문자열.split('.', maxsplit=3)
    - 문자열.split(sep='.', maxsplit=3)

    모두 같은 뜻 입니다. 이중 입맛에 맞는 것을 골라서 사용하면 됩니다.

    이상으로 문자열을 리스트로 잘라주는 split 함수에 대해서 알아보았습니다.
    감사합니다.