본문 바로가기

파이썬/파이썬 예제 코드

[파이썬 예제코드] 문자열 자료형

# 문자열 이란? 문자들로 이루어진 리스트라고 생각하면 쉽다.

# 【문자열 자료형】
x = 'Pluto is a planet 명왕성은 행성입니다.'
y = "Pluto is a planet 명왕성은 행성입니다."
x == y
print(x == y)

# 문자열에 따옴표가 연속으로 들어가는 문장이라면 다른 종료의 따옴표를 사용해야 합니다.
# 큰 따옴표 뒤엔 작은 따옴표를 사용해야하고 작은 따옴표 뒤에도 큰 따옴표를 사용해야 합니다.
print("Pluto's a planet! 명왕성은 행성입니다.")
print("My dog is named 'Pluto' 내 개이름이 '명왕성'입니다.")

# 아래처럼 작은 따옴표를 연속으로 쓰면 오류가 발생 합니다.
# 'Pluto's a planet!'

#이런 문제는 따옴표 앞에 \를 붙이는 것으로 해결이 가능 합니다.
print('Pluto\'s a planet!' '명왕성\'은 행성이다!')

# 문자열은 시퀀스(연속으로 이루어진 자료형) 입니다.
planet = 'pluto'
planet[0]

# 인덱싱도 문자열에서 가능하다.
print(planet[0])

# 문자열에서 슬라이싱도 가능 합니다.
planet[-3:]
print(planet[-2:])

# len() 함수로 문자열의 길이를 알 수 있습니다.
len(planet)
print(len(planet))

# 반복문도 사용 가능 합니다.
[char+'! ' for char in planet]
print([char+'! ' for char in planet])
values_01 = [char+'! ' for char in planet]
print(values_01)

# 문자열 타입이 리스트 타입과 가장 큰 차이점은 변경 불가능한 타입이라는 점 이다.
# 변경이 불가능 하므로 아래의 코드를 실행하면 오류가 발생합니다. 반면 리스트 타입은 변경이 가능 합니다.
# planet[0] = 'B'
# print(planet[0] = 'B')

# 【유용한 문자열 함수】
# str 타입도 많은 메소드를 가지고 있습니다.

# 모두 대문자로 출력하는 코드
cliam = "Pluto is a planet"
print(cliam.upper())

# 모두 수문자로 출력하는 코드
print(cliam.lower())

# 특정 문자를 포함하는 인덱스 찾기 (중요!)
# 인덱스는 자리수료 표현한다.
cliam.index('plan')
print(cliam.index('plan'))
cliam.startswith(planet)
print(cliam.startswith(planet))
cliam.endswith('dwarf planet')
print(cliam.endswith('dwarf planet'))

# 【문자열을 리스트로】
# str.split()은 문자열을 단어 단위로 분할해 리스트화 시킵니다.
# 기본 구분 기준은 공백 입니다. (구분자를 다양하게 설정 가능)
# 방대한 문자열을 전처리하여 핵심을 파악하거나 단어별로 보고 싶을때 유용하게 사용가능

words = cliam.split()
print(words)

# 구분자를 활용한 문자열 구분하기
datestr = '1956-01-31'
year, month, day = datestr.split('-')
datevalue = year, month, day = datestr.split('-')
print(datestr)
print(year, month, day)
print(datevalue)

# str.join()은 나눠진 단어를 하나로 묶는 기능을 수행한다.
'/'.join([month, day, year])
print('/'.join([month, day, year]))
print('-'.join([month, day, year]))

# 유니코드 문자를 문자열 리터럴에 넣어 문장을 완성 시킬 수 있습니다.
' 👏 '.join([word.upper() for word in words])
print(' 👏 '.join([word.upper() for word in words]))

# 【문자열 만들기】
# 파이썬은 + 연산자로 문자열을 연결 시킬 수 있습니다.
planet + ', we miss you'
print(planet + 'we miss you')

# str() 함수를 사용하면 숫자형을 문자형으로 변환할 수 있습니다.
# 문자형으로 바꿀경우 사전에 가지고 있던 특성은 사라집니다.
# str() 함수로 숫자형에서 문자형으로 형변환을 하면 에러가 발생하지 않습니다.
position = 9
planet + ", 나에게 있어" + str(position) + "번째 행성입니다."
position_value = planet + ", 나에게 있어" + str(position) + "번째 행성입니다."
# position이 숫자형이기 때문에 str()을 사용하여 문자열로 변환 후 값을 출력하면 정상적으로 출력되는것을 확인할 수 있습니다.
print(position_value)

# 【str.format】
# 문자열 변수의 길이가 길면 문자열을 만들기가 어렵습니다. 이럴때 유용하게 사용가능한것이 바로
# str.format() 입니다.
"{}, 나에게 있어 {}번째 행성 입니다.".format(planet, position)
print("{}, 나에게 있어 {}번째 행성 입니다.".format(planet, position))

# format.(__value, __format_spec) -> 값을 표현방법은 {}에 차례대로 변수를 설정해주면 된다.
# format() 함수는 형변환의 역할도 수행한다.

pluto_mass = 1.303 * 10**22
earth_mass = 5.9722 * 10**24
population = 52910390
# 소수점 2자리 혹은 3자리 쉼표로 구성된 백분률 형식
format_value = "{}의 무게는 {:.2} 킬로그램 입니다. (지구의{:.3%}배 이며). 이 곳에는 {:,} 명이살고 있습니다.".format(planet, pluto_mass, pluto_mass / earth_mass, population,)
print(format_value)

# .format() 함수는 인덱스를 가지며 0부터 시작 합니다. 결국 {}의 숫자가 값이 된다.
s = """플루토는 {0}입니다. 아니에요, 플루토는 {1} 입니다. {0}! {1}! {0}! {0}! {0}!""".format('행성', '소행성')
print(s)