728x90
반응형
문자열의 시작 따옴표 앞에 r을 두면 원시 문자열 raw string이 된다]|
print(r'This is kims\s dog')
This is kims\s dog
앞에 r이 붙어 있는 원시 문자열이기 때문에 파이썬을 백슬래시를 문자열의 일부로 간주한다.
백슬래시를 이스케이프 문자로 취급하지 않는다.3
원시 문자열을 사용하면 이스케이프 문자가 해석되지 않으므로,
파일 경로와 같이 역슬래시(\)가 자주 사용되는 문자열을 다룰 때 특히 유용하다
'Hello'.isupper() # 문자열이 대문자로 만 구성되어 있는지
.islower() 소
.isalpha() 문자열이 영문자로만 구성되어있는경우
.isalnum() 문자열이 영문자와 숫자로만 구성되는경우
.isdecimal() 문자열이 숫자로만 구성되는경우
.isspace(): 문자열이 공백 탭 및 줄바꿈 문자일 경우
정규식
- regular expression : 팬터를 이용해서 문자열을 찾거나 바꾸는 양식
def chek_number(phone_number):
if len(phone_number)!= 13:
return False
if phone_number[0:3]!= '010':
return False
if phone_number[3]!='-':
return False
for i in range(4,8):
if not phone_number[i].isdecimal():
return False
if phone_number[8] != '-':
return False
for i in range(9,13):
if not phone_number[i].isdecimal():
return False
return True
a= '010-1234-1232'
print(a, chek_number(a))
# a-z , A-Z,
# 010-\d\d\d\d-\d\d\d\d
import re
pattern = '010-\d\d\d\d-\d\d\d\d'
strt = '제휴대폰 번호는 010-1234-1234입니다.'
found = re.search(pattern,strt)
print(found.group())
010-1234-1232 True
010-1234-1234
#표현식
# ^시작 =>^\d
# $끝 => \d$
# . : 문자 : (한글자)
# \d : 숫자 (숫자 하나)
# \w: 한개의 문자, 한개의 숫자
# \s: 공백 (탭, 스페이스 , 줄바꿈, 캐리지리턴)
# []: 범위 _> [abc] a또는 b 또는 c, [a-z],[1-9]
# t= 수량 한정자
# * : 0 이상 반복 -> '', 'aa', 'aaaaaaaaa" \w
# + : 1 회 이상 반복-> '':거짓, 'a':참 , 'aaa':참
# ?" : 0또는 1회 반복
# {m} : m만큼 반복 {3}
# { n , m} : n회 이상 m회 이하
# (ab) : 그룹화 = > 'ab', 'abab', 'ababab'
# .+ => 문자가 1회 이상 있을때
# ^[1-9][0-9]*$ => 0이 아닌 숫자로 시작, 0에서 9사이의 숫자가 여러개 반복하는데 숫자로 끝난다.
# ^\d{6}-\d{7}$
# (Good)?Bye
pattern = '(Good)?Bye'
strt = 'GoodGoodByeBye'
found = re.search(pattern,strt)
print(found.group())
GoodBye
def check_email (email_addr):
pattern = '^[\w]+@[\w]+\.[A-Za-z]{2,4}$'
if (re.fullmatch(pattern, email_addr)):
print(f'{email_addr}는 유효한 주소입니다.')
else:
print(f'{email_addr}는 잘못된 주소입니다.')
check_email("jemmin213@naver.com")
check_email("jemmin213@naver.com2")
jemmin213@naver.com는 유효한 주소입니다.
jemmin213@naver.com2는 잘못된 주소입니다.
# 경로 : 워킹 디렉토리(워킹폴더)
import os
os.getcwd()
'C:\\Users\\user\\python_basic'
응용
def check_email_addr(email_addr):
regex = re.compile('^[a-zA-Z][a-zA-Z0-9]{3,50}@[a-zA-Z0-9]{2,8}[.][a-zA-Z]{2,5}$')
return regex.search(email_addr)
def do_I(customers):
print('고객정보 입력')
customer = { 'name': '', 'gender': '', 'email' : '', 'year': 0 }
customer['name'] = chk_input_data('이름을 입력하세요 : ', lambda x: True if len(x) > 2 else False)
customer['gender'] = chk_input_data("성별 (M/F)를 입력하세요: ", lambda x: True if x in ('M', 'F') else False)
customer['email'] = chk_input_data('이메일 주소를 입력하세요 : ', lambda x: True if check_email_addr(x) else False, False)
customer['year'] = chk_input_data('출생년도 4자리 입력하세요 : ', lambda x: True if len(x) == 4 and x.isdigit() else False)
customers.append(customer)
index = len(customers) - 1
return index
728x90
반응형
'파이썬' 카테고리의 다른 글
| 파이썬 class 클래스 (1) | 2023.11.10 |
|---|---|
| 파이썬은 객체지향 언어인가 절차지향 언어인가? (3) | 2023.11.09 |
| 파이썬 파일 읽기 쓰기 (2) | 2023.11.07 |
| 파이썬 함-수 이야기 (2) | 2023.11.07 |
| 리스트 안에서 포문을 써 볼까요? (0) | 2023.11.06 |