프로그래밍 언어/파이썬

문자열 정리

kms0204 2023. 4. 20. 23:28

문자열이란 문자들의 나열을 뜻하고,

따옴표(작은 따옴표, 큰 따옴표)로 감싸져서 표현된 문자, 단어들을 의미한다.

 

str1 = "Hello World"
str2 = 'abcdefg'

print(str1)
print(str2)

#작은 따옴표와 큰 따옴표 중 어느것을 사용해도 좋지만, 꼭 쌍을 맞춰서 사용해야된다.

 

위 코드의 결과처럼, 문자열로 감싸진 문자들이 그대로 출력되지만

문자열에서는 문자가 특별하게 인식되는 3가지 경우가 있다.

 

  1. 따옴표 안에 같은 종류의 따옴표를 사용했을 때
    ex) " " "
  2. 이스케이프 시퀀스(escape sequence)를 사용했을 때
    ex) \\    \'    \"     \a     \b    \f     \n   등등
  3. 문자열 포메팅을 했을 때
    -문자열의 원하는 위치에 원하는 값 집어넣기

각 경우에 대해 알아보고, 문자열을 다루기 위한 연산(더하기, 곱하기)과 유용한 방법 2가지(인덱싱, 슬라이싱)를 알아보도록 하겠다.


]

1번처럼 따옴표 안에 따옴표를 넣어서 표현하고 싶을 때가 있다.

"He said, "I love you" "처럼 말이다.

 

(물론 이 방식은 오류가 난다. 문자열이 "He said, "까지를 하나로 인식하기 때문이다.)

 

이를 위해서는 "다른 따옴표"를 사용해서 문자열을 감싸주면 된다.

 

'He said, "I love you" ' 처럼 말이다.

 

다옴표 3개로 감싸주어도 된다.

(ex.  """He said, "I love you"""")

 

물론, 이때도 작은 따옴표와 큰 따옴표 중 어느것을 사용해도 문제없다.

(쌍을 맞춰서 사용하기만 한다면!)


따라서 위 내용을 요약하면,

  1. 작은 따옴표로 감싸기
  2. 큰 따옴표로 감싸기
  3. 작은 따옴표 3개로 감싸기
  4. 큰 따옴표 3개로 감싸기

이 4가지 방법이 있다고 할 수 있겠다.

 


2번째 경우에서 언급한 이스케이프 시퀀스에 대해 알아보겠다.

 

이스케이프 시퀀스(escape sequence)란,

줄바꿈과 같이 문자열에서 표기하기 어려운 특정 문자를 백슬래쉬( \ )를 이용해서 표현한 것이다.

 

굳이 하나하나 외울필요 없고, 필요할 때 찾아서 사용하면 된다.

 


 

포맷팅

 

포맷팅이란 문자열의 포맷(형태)을 지정하는 것이다.

쉽게 말해서 문자열의 원하는 곳에 원하는 문자(값)을 넣는 것이다.

(주로 변하지 않는 내용과 변하는 내용을 함께 출력해야할 때 사용된다.)

city = "seoul"
today = 12
day = "화요일"
temperature = 26
	
print("%s의 %d일 %s 기온은 %d도 입니다." %(city, today, day, temperature))
#결과 : seoul의 12일 화요일 기온은 26도 입니다.

이때 "원하는 곳"을 지정하는 방식(문자)를 포맷코드라고 하며, 포맷코드는 자료형이 숫자인지, 문자인지에 따라서 조금씩 달라진다.

 

위 방식을 %키워드 포매팅이라고 하며, % 뒤에 나오는 값들(변수)과 포맷 코드가 일대일대응이 되어야한다.

 

 

 

 

위 방식도 많이 쓰지만, 아래의 3가지 방식도 많이 사용한다.

 

1. 인덱스값으로 바로 대입

name1 = "홍길동"
name2 = "박길동"
age = 18
height = 165.123
print("저의 이름은 {2}입니다. 그리고 나이는 {1}살이고 키는 {0}cm입니다.".format(height, age, name1))
print("{1}의 나이:{0}, {2}의 나이: {0}".format(age, name1, name2))


#결과 : 저의 이름은 홍길동입니다. 그리고 나이는 18살이고 키는 165.123cm입니다.
#결과 : 홍길동의 나이:18, 박길동의 나이: 18

 

2. 변수 이름으로 대입

print("저의 이름은 {me}입니다. 그리고 나이는 {age}살이고 키는 {height}cm입니다. 
제 가장 친한 친구는 {name}입니다.".format(me = "홍길동",height = 165.123, age = 18, 
name = "박길동"))

#format()함수 내에서 변수를 선언하고 초기화하면, 그 값을 "{변수명}"형식으로 바로 받아올 수 있다.
#결과 : 저의 이름은 홍길동입니다. 그리고 나이는 18살이고 키는 165.12cm입니다. 제 가장 친한 친구는 박길동입니다.

 

3. f문자열 포매팅

name = "홍길동"
age = 18
height = 165.123
print(f"저의 이름은 {name}입니다. 그리고 나이는 {age+10}살이고 키는 {height+0.5}cm입니다.")

#결과 : 저의 이름은 홍길동입니다. 그리고 나이는 28살이고 키는 165.613cm입니다.

 


 

문자열 연산

 

문자열끼리 더하거나(이어붙이거나) 곱할 수(여러번 반복해서 붙일 수) 있다.

어려운 개념은 아니니, 아래 예시코드를 통해서 바로 확인할 수 있을 것이다.

str1 = "Hello"
str2 = "World"
print(str1+str2)
#결과 : HelloWorld

str3 = apple
print(str3 * 3)
#결과 : appleappleapple

 


 

인덱싱

 

문자열을 다룰 때 아주 중요하거나 자주 쓰이는 개념이다.

문자열의 각 문자들에 앞에서부터 순서대로, 즉 0부터 번호를(인덱스) 매기는 것이다.

이를 이용해서 문자열의 문자들을 손쉽게 다룰 수 있다.

(물론 문자열이 길어졌을 때는 앞에서부터 순서대로 다룬다는 점이 불편할 수 있다. 따라서 이를 위해 뒤에서부터 접근하는 방법도 있다. 맨 뒤가 -1이고 앞쪽으로 갈수록 점점 번호가(인덱스) 작아진다.)

 

문자열을 저장한 변수이름[번호] 의 형식으로 사용된다.

 


 

슬라이싱 

 

인덱싱과 마찬가지로 자주 쓰이는 개념이다.

말 그대로, 문자열의 문자를 특정 기준을 잡아서 자르겠다(쪼개겠다)는 개념이다.

 

따라서 인덱싱에서 인덱스를 사용했던 것과는 조금 다르게, 범위를 표현해야한다.

[시작 인덱스 : 종료 인덱스 : 몇 칸씩 셀건지(기본값 = 1)]로 범위를 표현하는데, 주의해야 할 것은 이렇게 정해진 범위는

"시작 인덱스 <= 범위 < 종료인덱스" 라는 점이다.

 

인덱싱과 마찬가지로 음수 인덱스를 사용해서 뒤에서부터 접근할 수도 있다.

문자열을 저장한 변수이름[범위] 의 형식으로 사용된다.

 


 

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

리스트 정리  (1) 2023.05.11
연산자, 입력함수 정리  (0) 2023.04.13
변수와 출력함수  (0) 2023.04.04