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