3. 문자자료형
문자 자료에 대한 문서.
1 이스케이프 코드
프로그래밍을 위해 미리 정의해 둔 조합. 표현할 방법이 없으니, 코드화 하여 표현한다.
실제로 사용할 땐 역슬레시로 나타난다.
코드 | 설명 |
---|---|
\n | 개행(줄바꿈) |
\t | 탭(간격맞추기) |
\\ | 문자 \ |
\' | 따옴표 |
\" | 쌍따옴표 |
문자열을 'C:\경로\note' 라고 기입할 때 \n을 개행으로 인식하여 줄을 바꾸어버리곤 한다. 이러한 사태를 막기 위해선 문자열 앞에 r'내용'
형태로 앞에 r을 붙이면 이스케이프 코드를 사용하지 않고 입력한 그대로 나타난다.
2 문자열의 사용
2.1 따옴표 사용
문자열 데이터에 ' 를 사용하려면 다른 조치가 필요하다. 기본적으로 ', "는 문자열을 구분하기 위해 쓰이기 때문이다.
입력법 | 방법 |
---|---|
'I\'m sam' | 문자 앞에 \(역슬래시)를 넣는다. |
"i'm sam" | 쓰고자 하는 따옴표와 다른 종류의 따옴표를 사용한다. |
큰 따옴표도 같은 방식으로 입력한다.
문자를 정의할 때 따옴표 3개를 써서 정의하면 그 안에 보이는 그대로 문자열을 사용할 수 있다. 이것저것 생각하기 귀찮을 때 사용하자.
2.2 인덱싱
첫 번째 글자는 0번으로 인덱싱된다. 인덱스는 스페이스를 포함한다. 문자[숫자] 형태로 필요한 문자열을 포함할 수 있으며 문자[시작인덱스:끝인덱스] 형태로 여러 개의 문자를 뽑아낼 수도 있다.
2.3 문자열 포메팅
상황에 따라 다른 정보를 추출하기 위해 변하는 데이터를 포함한 문자열을 만들 필요가 있다. 문자열 안의 데이터를 수시로 바꿔주기 위한 편의장치.
의도 | 방법 | 예시 |
---|---|---|
문자열 포메팅 | "문자열 %d 문자열"%숫자
위 형태로 문자열 안의 데이터를 바꾸어줄 수 있다. |
deg = 23
temp = "현재온도는 %d도 입니다."%deg
|
2개라면? | "문자열 %d 문자열 %d"%(숫자1, 숫자2)
벡터형태로 넣어주면 된다. |
2.3.1 문자열 포멧 코드
의도 | 코드 | 이름기원 |
---|---|---|
문자열 넣기 | %s | string |
문자 1개 | %c | character |
정수 | %d | |
부동소수 | %f | float-point |
문자 % 넣기 | %% |
2.3.2 format
문자열 포멧코드 대신 "오늘 {}교시는 {}시간입니다.".format(5, "과학")
형태로 쓸 수도 있다. 데이터가 무너질 확률은 커지지만, 유연성이 크다.
이게 진짜 유용하다. 웹크롤링이나 문자를 다루는 데 굉장한 편의성을 제공한다. "제가 사는 도시는 {city} 입니다. 이곳은 {deg}도 입니다.".format(city="값", deg=5)
형태로 기입도 가능하다.
2.3.2.1 숫자 3자리 마다 콤마 찍기
금액을 표현할 때 숫자 3개마다 콤마가 있으면 가독성이 올라간다. format(대상숫자, ',')
형태로 간단하게 구현이 가능하다.
2.3.3 f-string 표현
문자열 앞에 f를 붙여 f"{변수}는 {변수2}입니다."
형태로 직관적인 사용이 가능하다.
2.4 문자열 관련함수
함수 | 의도 | 사용법 |
---|---|---|
count | 문자열 안에 특정 문자가 몇 개 있는지 알고 싶을 때 쓴다. | 문자열.count("셀 문자") |
find | 문자열 안에 특정 문자가 어디에 있는지 인덱스를 알려준다. | 문자열.find("찾을문자") |
index | find와 유사하다.
다만, 없는 문자를 찾을 때 find에선 -1을 반환하는 반면, index는 에러를 내서 종료시킨다. |
문자열.index("찾을문자") |
replace | 특정 문자를 바꾸고자 할 때. | 문자열.replace("찾을문자", "바꿀문자") |
split | 특정 문자열을 기준으로 문자들을 나누고자 할 때. | 문자열.split("나눌문자") |
join | 특정 문자열을 사이에 두고 합칠 때.
ex) 2021, 03, 22 형태의 파편화된 날짜데이터를 보기 좋게 합쳐줌. |
'사이문자'.join(리스트) |
2.5 정규표현식
표현식 | 설명 | 활용 |
---|---|---|
\D | 숫자가 아닌 문자. | import re # 정규표현식을 사용하게 해주는 모듈.
date = '2020.10-3' # 다양한 형태의 날짜.
date_list = re.split('\D+', date) # 숫자가 아닌 문자 한개 이상으로 구분하여 숫자맨 빼낼 때.
year = int(date_list)[0] # 이처럼 다양한 형태라도 날짜형식을 받을 수 있다.
day = {day:02d} # :02d 는 2글자로 표시하되, 1자리라면 0을 채워넣는다는 의미이다.
|