프로그래밍/Python

Python-15) 문자 find, split , join , replace , sort : Python 문자열, 파이썬 문자열, 파이썬 정렬

LeeSeunghyuk 2020. 12. 14. 14:42
반응형

안녕하세요 이승혁입니다.

 

이번 시간에는 문자열을 조작하는 마지막 실습을 진행해 보도록 하겠습니다.

 

< 실습 리스트 >

- 문자열 길이 구하기

- 문자열 알파벳 or 숫자 확인

- 문자열 대소문자 변환

- 문자열 공백 제거

- 문자 자료형 변환

- 문자열에 특정 문자 개수 세기

- 문자열의 특정 문자 위치 찾기

- 특정 문자로 분리하기

- 특정 문자로 결합하기

- 특정 문자를 다른 문자로 변환하기

- 문자열 정렬하기

 

 

※ 문자열의 특정 문자 위치 찾기

 

     문자열 객체의 메소드 find는 특정 문자(열)의 인덱스를 리턴해줍니다.

      find 메소드에 찾고자 하는 문자를 입력하면 해당 문자(열)의 최초 위치 인덱스를 리턴합니다.

txt='sh2463@gamil.com'
print(txt.find('@'))
index=txt.find('@')
print(txt[index])

     sh2463@gmail.com 을 담은 txt 문자열 객체에서 @의 위치를 찾아 index로 저장했습니다.

     그다음 문자열의 해당 index를 출력해보자 @가 출력되었습니다.


※ 특정 문자로 분리하기

 

   코드를 작성할 때 가장 많이 접하게 되는 경우가 구분자(separator)로 구분되어있는 문자열을

   파싱(parsing)하는 일이라고 합니다.

   이때 문자열 객체의 split()을 활용하면 구분자를 기준으로 문자열을 쉽게 분리해 파싱할 수 있습니다.

url='https://lsh-story.tistory.com/37'
print(url.split('/'))

log='name:이승혁 age:26 major:software'
log_split1=log.split(' ')
print(log_split1)
for i in log_split1:
    domain,data=i.split(':')
    print(data)

위의 예시의 log='name:이승혁 age:26 major:software' 같은 데이터도 split을 통해 데이터만 출력할 수 있습니다.


※ 특정 문자로 결합하기

 

     분리 하는 기능이 있으면 결합하는 기능도 있을 것 같습니다.

     문자열 객체의 join 메소드는 split과 반대되는 기능을 합니다.

     문자열이 요소인 리스트를 인자로 받아 연결해 새로운 문자열로 반환합니다.

listdata=['http:','//','lsh-story.tistory.com','/','37']
print(listdata)
print(''.join(listdata))

     join 객체의 설명 중 문자열이 요소인 리스트에 대한 궁금증이 생겼습니다.

     따라서 마지막 '37' 문자열을 숫자 37로 바꾸고 코드를 돌려봤습니다.

    시퀀스의 4번 인덱스가 str instance가 아닌 int 형태라는 TypeError가 발생했습니다.

 


※ 특정 문자를 다른 문자로 변환하기

 

     문자열 객체의 replace 메소드는 문자열에서 특정 문자(열)를 다른 문자(열)로 대체한 결과를 반환합니다.

txt='I hate Python.\nI hate Korea.\nI hate Kimchi.'
print(txt)
print('---------')
txt_replace=txt.replace('hate','like')
print(txt_replace)

문자열 replace 메소드의 첫 인자에 해당하는 단어를 모두 두 번째 인자에 해당하는 단어로 대체(replace)한 결과를 return 합니다.

 


 

※ 문자열을 정렬하기

 

     문자열을 정렬하기 위해서는 파이썬의 내장함수 sorted를 사용합니다.

     인자로 입력되는 문자열의 모든 문자를 a -> z 순의 오름차순으로 정렬하고,

     정렬된 문자를 각 요소로 하는 리스트를 retrun 합니다.

     내림차순으로 정렬하기 위해서는 두 번째 인자로 reverse=True 코드를 추가해줍니다.

 

     지금까진 문자열 객체의 메소드 였지만, sorted함수는 내장 함수이므로 사용 방법이 일반 메소드와 같습니다.

sentence='abiweaqawtglknscvoimae,lkafvcjf;a'
print('오름차순 정렬 :',sorted(sentence))
print('내림차순 정렬 :',sorted(sentence,reverse=True))

    ---> 반환된 결과가 리스트 입니다. 즉, 처음처럼 문자열로 결과를 사용하고 싶다면 방금 사용했던

           join 메소드를 사용합니다. 

    ---> 정렬한 결과를 return할 뿐, 원본 변수(sentence)에는 아무런 변화가 없습니다.

 

sentence='abiweaqawtglknscvoimae,lkafvcjf;a'
print('오름차순 정렬 :',''.join(sorted(sentence)))
print('내림차순 정렬 :',''.join(sorted(sentence,reverse=True)))
print('원본 :',sentence)

   ---> replace는 원본 문자를 전부 대체하여 변경했지만, sorted함수는 변환하지 않습니다.

 

 

 

다음 시간부터는 문자열 객체가 아닌, 리스트 객체에 대한 메소드에 대한 실습을 진행해 보도록 하겠습니다.

 

읽어주셔서 감사합니다.

반응형