안녕하세요 이승혁입니다.
이번 시간에는 문자열을 조작하는 마지막 실습을 진행해 보도록 하겠습니다.
< 실습 리스트 >
- 문자열 길이 구하기
- 문자열 알파벳 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함수는 변환하지 않습니다.
다음 시간부터는 문자열 객체가 아닌, 리스트 객체에 대한 메소드에 대한 실습을 진행해 보도록 하겠습니다.
읽어주셔서 감사합니다.
'프로그래밍 > Python' 카테고리의 다른 글
Python-19) 딕셔너리 기본값 : defaultdict, setdefault (0) | 2020.12.23 |
---|---|
Python-18) python 딕셔너리 메소드 : dict keys, values, items (0) | 2020.12.22 |
Python-17) list append, insert, del, remove, len, count : 리스트 객체 메소드, 리스트 메소드, 파이썬 마스터 (0) | 2020.12.21 |
Python-16) 리스트 인덱스, 추출, reverse : Python list , list 객체, 파이썬 리스트 (0) | 2020.12.15 |
Python-14) 문자열 공백 제거, 길이, 알파벳 확인, : Python strip, Python str, Python install (0) | 2020.12.13 |
Python-13) filter, 최대값, 최소값, 문자열 슬라이싱, 조작 : Python install, 파이썬 마스터 (2) | 2020.12.12 |
Python-12) input, type, % , divmod, abs, round ,int ,float (0) | 2020.12.04 |
Python-11) Python - Oracle 연동하기 , python sql, 파이썬 sql (0) | 2020.11.25 |