Python/Data Type

[Python] Sequence Data Type - string

데이터 세상 2021. 3. 9. 22:47
728x90
반응형

Sequence Data Type

  • memership 연산: in 키워드 사용
  • size 함수: len(seq)
  • slicing 속성: seq[:-1]
  • iterability: 반복문에 있는 데이터를 순회할 수 있음
  • 문자열, 튜플, 리스트, 바이트 배열, 바이트 등 5개의 내장 시퀀스 타입이 있음

문자열(string)

  • str, sequence of character
  • ''(작은 따옴표) 또는 ""(큰 따옴표)를 이용하여 문자 자료형임을 표현

Unicode 문자열

  • Unicode: 전 세계 언어의 문자를 정의하기 위한 국제 표준 코드
  • 공백, 특수문자, 수학 및 기타 분야의 기호들도 포함
  • 문자열 앞에 u를 붙이면 유니코드 문자열을 만들 수 있다.
print(u'안녕\u0020파이썬!)
>> 안녕 파이썬!

Casting(형 변환)

  • 데이터를 다른 자료형으로 변환
print(float(3))
print(int(3.0))
print(str(3))
print(hex(12))
print(oct(10))
print(bin(10))

>>
3.0
3
3
0xc
0o12
0b1010

String 연산

  • 덧셈: 두 문자열의 연결
  • 곱셈: 문자열의 반복
  • string 간 연산만 가능

인덱싱(Indexing)

  • 순서가 있는 변수의 특정 위치에 접근하는 방식
  • 데이터[시작 위치:끝 위치:간격] : 인덱스는 0부터 시작, 간격이 1이면 생략 가능
  • 시작 위치부터 끝 위치 -1까지의 데이터를 접근
  • 마이너스 인덱싱: 처음 위치를 0으로 두고 역으로 접근
str_6 = 'slicing example string'

print(str_6[8:14])
>> example

print(str_6[:3]) # 시작위치가 없는 경우 처음부터
>> sli

print(str_6[5:]) # 끝 위치가 없으면 끝까지
>> ng example string

print(str_6[:]) # 시작위치, 끝위치가 없으면 전체
>> slicing example string

print(str_6[-1])
>> g

print(str_6[-4:])
>> ring

print(str_6[:-2])
>> slicing example stri

print(str_6[::-1]) # string 역순
>> gnirts elpmaxe gnicils

String Method

  • 대소문자 변환: lower(), upper()
  • 문자 개수 카운팅: count()
  • 문자의 위치 찾기: find(), index()
    • find(): query가 문자열에 없으면 -1 반환
    • index(): query가 문자열에 없으면 error(ValueError) 발생
  • 문자열 바꾸기: replace()
  • 문자열 나누기/활용하기: split()
    • 특정 문자를 기준으로 문자열을 분리 후 리스트 반환
    • 생략 시 기준은 띄어쓰기
  • 문자열 삽입하기: join()
    • 각 문자 사이에 특정 문자열 삽입
slayer = ["버피", "앤", "아스틴"]
print(" ".join(slayer))
>> 버피 앤 아스틴

print("".join(reversed(slayer)))
>> 아스틴앤버피
  • dir(str): string method 목록

format() 

문자열에 변수를 추가하거나 형식화하는데 사용

고급 형식지정 문자열 의미
{:>10} 전체 10칸을 차지하며 공백을 앞에 붙임 (문자열을 오른쪽에 붙여서 출력)
{:<10} 전체 10칸을 차지하며 공백을 뒤에 붙임 (문자열을 왼쪽에 붙여서 출력)
{:^10} 전체 10칸을 차지하며 공백을 앞뒤에 붙임 (문자열을 중앙에 붙여서 출력)
{:.5f} 부동소수점의 소수점 아래 5자리까지 표시
{:,} 천단위 쉼표 표시
"{0} {1}".format("안녕", "파이썬!")
>> 안녕, 파이썬!

"이름: {who}, 나이: {age}".format(who="제임스",  age=24)
>> 이름: 제임스, 나이: 24

# 파이썬 3.1부터 필드 이름이나 인덱스를 생략할 수 있다.
"{} {} {}".format("파이썬", "자료구조", "알고리즘")
>> 파이썬 자료구조 알고리즘

# 지정자
# s: 문자열(str) 형식, r: 표현(repr), a: 아스키(ascii) 코드 형식

import decimal
"{0} {0!s} {0!r} {0!a}".format(decimal.Decimal("99.9"))
>> 99.9 99.9 Decimal('99.9') Decimal('99.9')

f-strings

 

PEP 498 -- Literal String Interpolation

The official home of the Python Programming Language

www.python.org

 

2. Lexical analysis — Python 3.9.2 documentation

2. Lexical analysis A Python program is read by a parser. Input to the parser is a stream of tokens, generated by the lexical analyzer. This chapter describes how the lexical analyzer breaks a file into tokens. Python reads program text as Unicode code poi

docs.python.org

name = "프레드"
f"그의 이름은 {name!r}입니다.
>> 그의 이름은 '프레드'입니다.
 
f"그의 이름은 {repr(name)}입니다. #repr()은 !r과 같다
>> 그의 이름은 '프레드'입니다.


import decimal
width = 10
precision = 4
value = decimal.Decimal("12.34567")
f"결과: {value:{width}.{precision}}" #중첩 필드 사용
>> 결과: 12.35


from datetime import datetime
today = datetime(year=2021, month=2, day=22)
f"{today: %B %d, %Y}" # 날짜 포맷 지정 지정자(specifier) 사용
>>  February 22, 2021

number = 1024
f"{number:#0x}" # 정수 포맷 지정자 사용(16진수 표현)
>> 0x400

문자열 언패킹

**: 문자열 매핑 언패킹 연산자 

# locals(): 현재 scope에 있는 local variable를 딕셔너리로 반환
hero = "버피"
number = 999
"{number}: {hero}".format(**locals())
>> 999: 버피

※ unpacking: collection의 요소를 여러 변수에 나누어 담는 것


References

728x90
반응형

'Python > Data Type' 카테고리의 다른 글

[Python] Sequence Data Type - tuple  (0) 2022.04.25
[Python] Collection Data Type - dictionary  (0) 2021.03.09
[Python] Numeric Data Type  (0) 2021.03.09
[Python] Boolean Data Type  (0) 2021.03.09
[Python] Python Data Type  (0) 2021.02.22