파이썬 기초(9)
2024. 9. 22. 16:02ㆍpython study/프로그래밍1
문자열
- 문자들이 열렬로 묶여 있는 것을 의미한다.
- 문자열 상수는 작은따옴표나 큰 따옴표 사용
s="abcdefg"
s1='seojun'
원시 문자열
- r을 따옴표 앞에 두어서 이스케이프 문자를 무시하고 출력할 수 있다.
이스케이프 문자
백슬래시( \ ) 문자를 사용하여 의미를 지워 준다.
- 예를 들어서 \' 를 사용하게 된다면 따옴표가 가지는 기능을 무시해 준다.
- 하지만 r을 붙인다면 이스케이프 문자의 기능을 무시하고 문자열 전체를 출력해 준다.
print('abcd\'seojun')
print(r'abcd\'seojun')
abcd'seojun
abcd\'seojun
r: 문자열의 이스케이프 기능 무시
이스케이프 문자( \ ): 문자열 내부에서 따옴표와 같은 문자 앞에 붙어서 기능을 무시
인덱싱&슬라이싱
- 문자열도 리스트와 같은 자료구조에 속하게 된다.
- 리스트의 와 동일한 방식으로 인덱싱과 슬라이싱이 가능하다.
s="abcdefgh"
print(s[1])
print(s[-2])
print(s[0:3])
print(s[-3:-1])
b
g
abc
fg
- s [1]: 2번째 문자(리스트는 0번째 인덱스부터 시작)
- s [-1]: 역방향에서 1번째 문자
- s [0:3]: 0~2번째
- s [-3:-1]: -3~-2번째
cf) 문자열은 문자를 변경할 수 없기 때문에 인덱싱을 통해 문자를 변경할 수 없다.
s="abcdefgh"
s[0]='A'
File "/home/main.py", line 2, in <module>
s[0]='A'
TypeError: 'str' object does not support item assignment
인덱싱: s [index]로 사용
슬라이싱: s[ n1 : n2 ]는 n1부터 n2-1까지를 의미
in과 not in
- s1 in s2: s1이 s2에 있으면 True
- s1 not in s2: s1이 s2에 없으면 True
s="abcdefgh"
print('a' in s)
print('b' not in s)
True
False
% s
- % s는 문자열 내에 두고 % 뒤에 등장하는 값으로 변경
- f-string에서 주로 사용
s1="abc"
s2="def"
print("%s와 %s는 다르다."%(s1,s2))
abc와 def는 다르다.
- 위의 코드와 같이 여러 개의 % s를 문자열에 넣는다면 뒤에 나오는 %를 괄호로 묶어준다.
f-string
- 파이썬 3.6부터 활용됨
- 문자열 앞에 f를 붙임
- 문자열 안에 중괄호를 사용하고 그 괄호 안에 문자열을 넣음
s1="abc"
s2="def"
print(f"{s1}와 {s2}는 다르다.")
abc와 def는 다르다.
s1 in s2: s1이 s2안에 있으면 True
s1 not in s2: s1이 s2안에 없으면 True
%s 활용법: "% s" % 문자열
f-string: f"{문자열}"
문자열 비교
| 기호 | 의미 |
| a<b | a보다 b가 사전순으로 뒤에 있으면 True |
| a>b | a보다 b가 사전순으로 앞에 있으면 True |
| a!=b | a와 b가 다르면 True |
| a==b | a와 b가 같으면 True |
s1="abc"
s2="def"
print(s1<s2)
print(s1>s2)
print(s1!=s2)
print(s1==s2)
True
False
True
False
대소문자 변환하기 및 검사
- s.lower(): s문자열을 소문자로 변환
- s.upper(): s문자열을 대문자로 변환
s1="AbCd"
print(s1.lower())
print(s1.upper())
abcd
ABCD
- s.islower(): s가 알파벳이 소문자로만 이루어져 있으면 True
- s.isupper(): s가 알파벳이 대문자로만 이루어져있으면 True
- s.isalpha(): 알파벳으로만 이루어져 있으면 True
- s.isalnum(): 알파벳과 숫자만으로만 이루어져 있으면 True
- s.isdecimal(): 숫자로만 이루어져 있으면 True
- s.isspace(): 줄 바꿈, 공백, 탭 등으로 이루어져 있으면 True
s1="abcd"
print(s1.islower())
s2="ABCD"
print(s2.isupper())
s3="abc/"
print(s3.isalpha())
s4="ab12"
print(s4.isalnum())
s5="1234"
print(s5.isdecimal())
s6="\n\t "
print(s6.isspace())
True
True
False
True
True
True
startswith()와 endswith()
- s.startswith( c ): c로 s문자열이 시작된다면 True
- s.endswith(c): c로 s문자열이 끝나면 True
s="abcd"
print(s.startswith('a'))
print(s.endswith('d'))
True
True
split()
- 문자열이 띄어쓰기, 콤마 등으로 분리되어 있으면 이를 리스트 형식으로 분리해 준다.
- s.split('문자'): 문자를 중심으로 s 문자열에 있는 단어를 분리해 줌
- 예제 1
s="abkcdkefkgf"
print(s.split('k'))
['ab', 'cd', 'ef', 'gf']
- 예제 2
s = """ab
cd
ef
gf"""
print(s.split("\n"))
['ab', 'cd', 'ef', 'gf']
join()
- 문자열을 하나로 결합할 때 사용한다.
- 문자. join(리스트): 리스트에 있는 문자(문자열)를 문자를 사이에 두면서 결합한다.
- 예제 1
s=['ab','cd','ef']
print(','.join(s))
ab,cd,ef
- 예제 2
s='2024,09,22'
print('-'.join(s.split(',')))
2024-09-22
- 예제 1처럼 리스트에서 콤마를 중심으로 문자열 하나로 만들 수도 있고 예제 2처럼 문자열에서 바로 split을 활용하여 분리해 준 다음 join을 해주어도 상관없다.
strip()
- strip(): 왼쪽 오른쪽 끝 공백 문자를 제거하고 문자열 반환
- lstrip(): 왼쪽 끝의 공백 문자 제거
- rstrip(): 오른쪽 끝의 공백 문자 제거
s=" hello world "
print(s.strip())
print(s.lstrip())
print(s.rstrip())
hello world
hello world
hello world
- 특정 문자를 제거하고 싶으면 괄호 안에 문자를 넣으면 된다.
s="####hello world$$$#"
print(s.strip('#$'))
print(s.lstrip('#$'))
print(s.rstrip('#$'))
hello world
hello world$$$#
####hello world
ord()와 chr()
- ord(): 문자를 아스키코드 값으로 바꿔 주거나 알파벳이 아니면 유니코드 값으로 변경해 준다.
s='a'
s1='나'
print(ord(s))
print(ord(s1))
97
45208
- chr(): 숫자값을 문자로 바꾸어 준다.
print(chr(97))
print(chr(44032))
a
가
찾기, 바꾸기
- s.find(문자): 앞에서부터 탐색을 하고, 문자가 어느 위치에 있는지 찾아서 인덱스(위치)를 출력
- 제일 먼저 등장하는 문자의 인덱스를 출력
- 만약 없다면 -1 출력
s='junsung.py'
print(s.find('sung'))
3
- s.rfind(문자): 뒤에서부터 탐색을 하고, 문자가 어느 위치에 있는지 찾아서 인덱스(위치)를 출력
s='tell me tell me tell me'
print(s.rfind('tell'))
16
- s.count(c): s 문자열에서 c 문자의 개수를 출력해 준다.
s='tell.me.tell.me.tell.me'
print(s.count('.'))
5
- s.replace(a, b): s문자열에 있는 a를 b로 바꾸어 준다.
s='tell.me.tell.me.tell.me'
s=s.replace('tell','help')
print(s)
help.me.help.me.help.me
예시
- North Atlantic Treaty Organization의 단어의 맨 앞 문자를 가져와서 NATO를 출력해 보기
s='North Atlantic Treaty Organization'
s_list=s.split(" ")
for i in s_list:
print(i[0],end='')
정규식
- 특정한 규칙을 가지고 있는 문자열들을 표현하는 수식
| 식 | 기능 | 설명 |
| ^ | 시작 | 문자열의 시작 |
| $ | 끝 | 문자열의 끝 |
| . | 문자 | 한 개의 문자와 일치 |
| \d | 숫자 | 한 개의 숫자와 일치 |
| \w | 문자와 숫자 | 한 개의 문자나 숫자와 일치 |
| \s | 공백 문자 | 공백, 탭, 줄바꿈, 캐리지리턴 문자와 일치 |
| [] | 문자 종류, 범위 | [abc]는 a또는 b또는 c를 나타냄. [a-z]는 a부터 z까지 중 하나를 의미 [1-9]는 1부터 9까지 중 하나를 의미 |
- abcde: 정확히 abcde와 일치해야 함
- . : 한자리 문자
- \d\d\d: 3자리 숫자
- \w: 한자리 숫자나 문자
| 수량 한정자 | 기능 | 설명 |
| * | 0회 이상 반복 | " a* "는 "","a","aa","aaa' .... |
| + | 1회 이상 | "a+"는 "a","aa","aaa" .... |
| ? | 0또는 1회 | "a?"는 "", "a" |
| {n} | n회 | "a{2}"는 "aa" |
| {n,m} | n회 이상 m회 이하 | "a{1,3}"는 "a","aa","aaa" |
| (ab) | 그룹화 | (ab)*는 "", "ab", "abab", "ababab"... |
- .+: 문자를 1회 이상 반복
- ^[1-9][0-9]*$: 처음 숫자는 0이 아닌 숫자이고 전체가 숫자
- ^\d {6}-\d {7}$: 숫자를 각각 -를 중심으로 6번, 7번 반복
- (seojun )? Bye: "bye" 또는 "seojun Bye"
- 예시
import re
s=r"^[\w]+@[\w]+\.[A-Za-z]{2,4}$"
email="abcde@gmail.com"
if(re.search(s,email)):
print("True")
else:
print("False")
True'python study > 프로그래밍1' 카테고리의 다른 글
| 인공지능 수업(2일차) (0) | 2024.07.16 |
|---|---|
| 인공지능 수업(1일차) (0) | 2024.07.15 |
| 파이썬 기초(7) (0) | 2024.05.19 |
| 파이썬 기초(6) (1) | 2024.05.19 |
| 파이썬 기초(5) (0) | 2024.05.19 |