파이썬/기본문법

파이썬 문자열 함수 및 기본 문법

코데방 2024. 2. 14.
728x90

파이썬 문자열 합치기

 

파이썬에서 가장 기본적으로 문자열을 합치는 방법은 아래와 같습니다.

 

a = "사과"
b = "배"

print(a + b + "메롱") # 띄어쓰기 없음
print(a, b, "메롱") # 디폴트 값 자동 공백 한 칸 지정
print(a, b, "메롱", sep = "") # 중간 공백 지정 (띄어쓰기 없앰)
print(a, b, "메롱", sep = "@") # 중간 공백 지정 ("@"로 대체)

 

 

 

 

위와 같이 변수와 직접 지정되는 문자열을 하나씩 합쳐주는 방식이 기본이지만 좀 더 편하게 사용할 수 있도록 문자열을 포매팅하는 방법들도 있습니다.

 

a = "사과"
b = "포도"

print("{a} {b} 메롱") # 직접 변수 삽입 
print("{} {} 메롱".format(a, b)) # format 함수 사용 ({}내부만 변수로 치환)

 

 

 

 

문자열 포맷 코드를 이용하는 방법도 있습니다.

 

a = "사과"
b = "포도"
a_num = 10
b_num = 20

print("%s는 %d개,  %s는 %d개" % (a, a_num, b, b_num))

 

문자열 포맷 코드 설명
%s 문자열(String)
%c 문자1개(Char)
%d 정수(Int)
%f 소수(Float)
%o 8진수
%x 16진수
% % 문자 "%" 자체 표현 (// 와 같음)

 

 

 

 

이 중 "%s"는 모든 타입의 변수 값을 변환해 넣을 수 있습니다.

a = "사과"
b = "포도"
a_num = 2
b_num = 4.5

print("%s는 %s개,  %s는 %s개" % (a, a_num, b, b_num))

 

 

 

 

파이썬 문자열 슬라이싱 (문자열 나누기)

 

인덱스 번호를 이용해 문자열의 순서를 나눌 수 있습니다.

첫 글자의 인덱스는 "0"이며 마지막 글자부터 거꾸로 셀 때 마지막 글자는 "-1" 입니다. 

str = "Python is very Good"

print(str[0]) # 첫글자 "P"
print(str[-1]) # 마지막 글자 "d"

print(str[0:6]) # 인덱스 0~5까지의 문자 "Python"
print(str[:6]) # 처음부터 시작할 때 0은 생략 가능

print(str[7:9]) # 인덱스 7~8까지 문자 "is"
print(str[7:]) # 인덱스 7번째 문자부터 끝까지 "is very Good"

print(str[-4:]) # 뒤에서 4번째 글자부터 마지막까지 "Good"
print(str[0:-5]) # 첫글자 ~ 뒤에서 5번째 글자 직전까지 "Python is very"

 

 

 

 

파이썬 문자열 정렬하기 

 

먼저 위의 문자열 포맷 코드에서 문자열을 정렬하는 방법입니다.

공간 갯수를 설정한 뒤 그 공간 내부에서 왼쪽 정렬할지 오른쪽 정렬할지 결정해 줍니다.

 

# 전체 10칸의 공간에서 오른쪽으로 정렬
print("%s" % "Right")
print("%10s" % "Right")

# 전체 10칸의 공간에서 왼쪽으로 정렬
print("%s" % "Left")
print("%-10s나머지문자" % "Left")

 

 

 

 

소수점을 표현하는 방법과 소수점 숫자를 정렬하는 방법입니다. 

 

# 소수점 표현 (소수점 3자리까지만 표시, 반올림 적용)
print("%0.3f" % 1.2345678)

# 소수점 숫자 정렬하기
print("%10.3f" % 1.2345678)  # 10개 공간 중 오른쪽 정렬
print("%-10.3f다른문자" % 1.2345678)  # 10개 공간 중 왼쪽 정렬

 

 

 

 

format() 함수를 사용하는 방법도 있습니다. 예외처리까지 잘 돼있는 함수이기 때문에 보통 format() 함수를 사용하는 경우가 많습니다. 

 

# 왼쪽 정렬 (10개 공간 중 왼쪽으로 정렬)
# 왼쪽정렬(:<), 공간부여(10)
# 0은 생략가능
print("{0:<10}나머지문자".format("Left"))


# 오른쪽 정렬 (10개 공간 중 오른쪽으로 정렬)
# 오른쪽정렬(:>), 공간부여(10)
print("{:>10}".format("Right"))

 

 

# 가운데 정렬 (10개 공간 중 가운데 정렬)
print("{:^10}".format("middle"))

 

 

 

 

위에서 준 공백을 다른 문자로 채울 수 있습니다. 왼쪽(:<) 오른쪽(:>) 가운데(^) 기호에 문자를 넣어주면 됩니다. 

 

# 정렬 공백에 다른 문자 채우기
print("{0:*<10}나머지문자".format("Left"))
print("{:*>10}".format("Right"))
print("{:*^10}".format("middle"))

 

 

 

소수점 표현입니다. 소수점 또한 정렬과 공백 채우기를 사용할 수 있습니다.

 

print("{0:0.4f}".format(1.23456789))  # 소수점 네자리 표시(반올림) "1.2346"

print("{0:<10.4f}Left".format(1.23456789))  # 10칸 공간 중 왼쪽 정렬

print("{0:>10.4f}".format(1.23456789))  # 10칸 공간 중 오른쪽 정렬

print("{0:*>10.4f}".format(1.23456789))  # 정렬 공간 다른 문자로 채우기

 

 

 

 

파이썬 3.6버전부터 지원하는 "f문자열 포매팅"을 사용할 수도 있습니다. format() 함수와 같은 형식입니다.

 

# f문자열 포매팅 기본
a = "사과"
b = "포도"
c = "딸기"
print(f"{a}랑 {b}랑 {c} 맛있엉")

# f문자열 포매팅 왼쪽 정렬, 오른쪽정렬
print(f"{a:<10}랑 {b:^10}랑 {c:>10} 맛있엉")
print(f"{a:*<10}랑 {b:*^10}랑 {c:*>10} 맛있엉")

# 소수점 표시 및 정렬 (4자리 표시 및 왼쪽 정렬)
a = 1.23456789
print(f"{a:*<20.4f}냠냠")

 

 

 

 

 

 

파이썬 문자열 관련 함수

 

[ 문자열 안 일치하는 문자 갯수 찾기 ]

a = "http://www.naver.com"

print(a.count("t")) # "t"의 갯수 => "2"

 

 

 

 

[ 문자열 안 일치하는 문자 위치 찾기 ]

 

# 첫번 째 w의 인덱스 위치 찾기
# 없을 시 "-1" 리턴
print(a.find("w")) # 7
print(a.find("naver")) # 11

# 첫번 째 w의 인덱스 위치 찾기
# 없을 시 에러 발생
print(a.index("w")) # 7
print(a.index("naver")) # 11

 

 

 

 

[ 문자열 중간 문자 삽입 ]

 

join() 함수를 사용해 문자열 사이에 값을 끼워넣을 수 있습니다. 리스트나 튜플 타입에도 적용이 가능한 함수입니다. 

a = "abcdefg"

# 문자 자이에 콤마 넣기
a = ",".join(a)
print(a)

 

 

 

 

[ 대문자를 소문자로 바꾸기 / 소문자를 대문자로 바꾸기 ]

 

a = "Hello" 
print(a.lower()) # 소문자로 바꾸기

b = "Hello"
print(a.upper()) # 대문자로 바꾸기

 

 

 

 

[ 문자열 공백 지우기 ]

 

str = "    Hi    "

print(str.lstrip())  # 왼쪽 공백 지우기
print(str.rstrip())  # 오른쪽 공백 지우기
print(str.strip())  # 양쪽 공백 지우기

 

 

 

 

[ 문자열 바꾸기 ]

 

ad = "htt://www.naver.naver.com"

# 모든 naver 단어를 google로 바꾸기
print(ad.replace("naver", "google"))

 

 

 

 

[ 문자열 나누기 ]

 

파라미터를 공백으로 두면 공백을 기준으로 나눠집니다. 

 

ad = "htt://www.naver.google.com"

spl = ad.split(".") # "."기준으로 잘라서 리스트 타입으로 반환
print(spl)

 

728x90

댓글

💲 추천 글