문자열

2022. 11. 3. 22:24파이썬(Python)

반응형

1. 문자열 입력

- input() 함수 이용.

input_word=input()
print(input_word)

결과

>> hello
hello

 

- 문자열은 1차원 배열과 같다.

- 만약 문자열의 첫 번째 문자를 참조하기 위해서는 0번지를 참조.

- 문자열의 k 번째 문자를 참조하기 위해서는 k-1번지를 참조.

input_word=input()

print(input_word[0]) # 1번째 문자
print(input_word[2]) # 3번째 문자

결과

>> hello
h
l

2. 문자열의 길이

- len() 함수 이용

input_word=input()

print(len(input_word))

결과

>> banana
6

3. 공백을 포함한 문자열

- 입력한 문자열이 hello world일 때

- 입력한 문자열의 6번째 문자열을 출력하기 위해 5번지를 참조하면 공백이 나온다.

- 문자열의 길이를 구하기 위해 len() 함수를 이용하면 공백을 포함한 총 길이를 출력한다.

 

input_word=input()

print(input_word[5])
print(len(input_word))

결과

>> hello world
 
11

4. 문자열 리스트

- 문자열들을 원소로 갖는 리스트.

- 하나의 문자열1차원 배열

- 문자열 리스트2차원 배열

arr=['apple','banana','watermelon']

print(arr[0]) # 첫 번째 문자열
print(len(arr[1]))  # 두 번째 문자열의 길이

print(arr[2][0])  # 세 번째 문자열의 첫 번째 문자 
print(arr[2][1])  # 세 번째 문자열의 두 번째 문자 
print(arr[2][2])  # 세 번째 문자열의 세 번째 문자

결과

apple
6
w
a
t

5. 문자열 순회

5-1. index 단위로 순회

- 문자열의 길이를 구한 후, for loop를 이용.

input_str=input()
for i in range(len(input_str)):
    print(input_str[i])

5-2. 바로 원소에 접근

input_str=input()
for i in input_str:
    print(i)

결과

>> hello
h
e
l
l
o

6. 문자열 붙이기 (concat)

6-1. '+' 연산 사용

a,b='Thank','You'
print(a+b)

결과

ThankYou

 

6-2. 새로운 문자열 선언

- 초기 문자열을 빈 문자열인 ""로 선언

- 새로운 문자열에 문자열을 더함 ('+')

a,b='Thank','You'

concat_str=''
concat_str+=a
concat_str+=b

print(concat_str)

결과

ThankYou

 

6-3. join() 함수 사용

- join 함수는 각 원소들을 특정 구분 값(sep)을 기준으로 합쳐주는 함수.

- 사용법 : sep.join(리스트)

arr=['a','b','c']

print(','.join(arr))
print(':'.join(arr))
print(''.join(arr))

결과

a,b,c
a:b:c
abc

 

join()을 사용해서 문자열을 합치기

a,b='Thank','You'

print(''.join([a,b]))

결과

ThankYou

7. 특정 문자열 포함 여부

- 문자열 'helloworld'에 특정 문자열 'ow'가 포함되어 있는지 여부 판단.

7-1. for loop를 사용하여 위치를 확인

a='helloworld'
b='ow'
exists=False

for i in range(len(a)-1):
    if a[i]==b[0] and a[i+1]==b[1]:
        exists=True
        break
    
print(exists)

결과

True

 

7-2. slicing 사용

a='helloworld'
b='ow'
exists=False

for i in range(len(a)-1):
    if a[i:i+len(b)]==b:
        exists=True
        break
    
print(exists)

결과

True

 

7-3. in 사용

a='helloworld'
b='ow'

exists=b in a
print(exists)

8. 특정 문자열이 포함된 위치 구하기

- 포함되지 않는다면 -1 출력

- 여러 번 나타나면 가장 앞선 위치 출력

 

8-1. for loop를 사용

- 각각의 위치에 대해 조사하여 특정 문자열과 일치하는 위치가 있었는지 확인

a='helloworld'
b='ow'

start_index=-1
for i in range(len(a)-(len(b)+1)):
    if a[i:i+len(b)]==b:
        start_index=i
        break
print(start_index)

결과

4

 

8-2. index() 함수 사용

a='helloworld'
b='ow'

print(a.index(b))

결과

4

 

- 만약 부분 문자열이 없는 경우 ValueError가 발생

a='helloworld'
b='ww'

print(a.index(b))

결과

ValueError: substring not found

 

- in으로 부분 문자열이 있는지 확인 => 해당 위치 찾기

a='helloworld'
b='ww'

if b in a:
    print(a.index(b))
else:
    print(-1)

결과

-1

 

a='helloworld'
b='ow'

if b in a:
    print(a.index(b))
else:
    print(-1)

결과

4

 

8-3. find() 함수 사용

- find() : 해당 부분 문자열이 없는 경우 -1, 있는 경우 가장 앞에 나오는 부분 문자열의 위치 반환

a='helloworld'
b='ow'

print(a.find(b))

결과

4

 

a='helloworld'
b='ww'

print(a.find(b))

결과

-1

9. 문자열 수정

- 문자열 'helloworld'의 'w'를 'z'로 수정.

 

9-1. 에러 발생

a='helloworld'
b=a.find('w')
a[b]='x'
print(a)

결과

TypeError: 'str' object does not support item assignment

- 문자열은 immutable.

- 변할 수 없는 타입이기 때문에 절대 변경할 수 없다.

 

9-2. slicing 사용

- 새로운 문자열을 만들어 주기.

- 수정할 문자 양옆으로 slicing 적용. 

a='helloworld'
b=a.find('w')
c='z'

new_str=a[:b]+c+a[b+1:]
print(new_str)

결과

hellozorld

 

9-3. 문자열을 list()로 감싸기.

- 문자열을 각 문자를 원소로 갖는 리스트로 변환

- 리스트는 mutable 타입이기 때문에 원소를 수정할 수 있다.

- 수정 후 문자열을 합치기 위해 join을 사용.

a='helloworld'
b=a.find('w')
c='z'

a_arr=list(a)
a_arr[b]=c

print(''.join(a_arr))

10. 문자열 삭제

- 문자열 'helloworld'에서 'w'를 삭제

 

10-1. slicing 사용

- 삭제할 문자의 양쪽 문자열들만 slicing을 통해 살려둔다.

a='helloworld'
b=a.find('w')

print(a[:b]+a[b+1:])

결과

helloorld

 

10-2. list()로 감싸기

- list()로 감싸 문자열을 리스트로 변환

- pop 함수를 사용해 해당 문자를 삭제.

- join 함수를 사용해 각 원소를 문자열로 합침.

a='helloworld'
b=a.find('w')

a_arr=list(a)
a_arr.pop(b)
print(''.join(a_arr))

결과

helloorld

 

'파이썬(Python)' 카테고리의 다른 글

문자열 문제풀이2  (0) 2022.11.09
문자열 문제 풀이  (0) 2022.11.08
2차원 배열 활용 2  (0) 2022.11.03
2차원 배열 활용  (0) 2022.10.28
2차원 배열  (0) 2022.10.26