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 |