본문 바로가기
Python

Python - 크롤링을 위한 지식(문자열 함수)

by DGK 2021. 11. 4.

 

인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

크롤링을 위한 지식(Python)

예제를 통해, 크롤링을 위한 파이썬의 문자열 함수를 다루고자 한다.

 

파이썬의 문자열 함수

data = 'Dave David'

print(data.count('D'))

 

  • count()

```

결과 :

2

 

```

 

count() 함수는 특정 문자열에서 인자로 넣은 문자가 몇 번 나오는지 알려주는 함수이다. (단, 대소문자는 구분됨)

 

string = "Dave ID is dave"
print(string.index('D'))

string2 = '안녕'
print(string2.index('녕'))

string3 = 'Dave'
print(string.index('x'))

 

  • index()

```

결과 :

0

1

---------------------------------------------------------------------------

ValueError

Traceback (most recent call last)

<ipython-input-9-6c630a5b0d62> in <module>

          8

          9 string3 = 'Dave'

---> 10 print(string.index('x'))

         11

 

ValueError: substring not found

 

```

 

index() 함수는 인자로 들어온 문자가 해당 문자열에서 어디에 존재하는지 인덱스 번호로 알려주는 함수이다.

만약, 해당 문자열에 존재하지 않는 문자를 인자로 넣으면 에러가 발생한다.

참고로, 인덱스 번호는 0부터 시작하며 공백도 포함한다.

 

string = 'dave is david'

print(string.find('x'))
print(string.find('a'))

 

  • find()

```

결과 :

-1

1

 

```

 

find() 함수는 index() 함수와 동일한 기능을 한다.

하지만, index() 함수와 달리 find() 함수는 해당 문자열에 없는 문자를 인자로 넣어도 에러가 발생하지 않으며

에러 대신 -1을 반환한다.

 

string = '12345'
string2 = 'xxxxxx'

print(string2.join(string))

string3 = '12345'
comma = ','

print(comma.join(string3))

 

  • join()

```

결과 :

1xxxxxx2xxxxxx3xxxxxx4xxxxxx5

1,2,3,4,5

 

```

 

join() 함수는 문자열 사이에 특정 문자열 또는 기호를 끼워 넣을 때 사용한다.

 

data = '  Dave  '
print(data.strip())

string = '         david       '
print(string.strip())
print(string.lstrip())
print(string.rstrip())

string2 = '     9999999999999(Dave)88888888888888   '
print(string2.strip(' 98()'))

 

  • strip()

```

결과 :

Dave

david

david                         [david 우측에 공백 존재]

                david

Dave

 

```

 

strip() 함수는 해당 문자열에서 원하는 문자 또는 기호를 제거할 수 있다.

strip() 함수는 인자가 없으면 공백을 제거하고, 인자가 존재하면 해당 문자열에서 인자에 포함되지 않는 글자가

나올 때까지 인자로 들어온 문자 또는 기호를 제거한다.

lstrip() 함수는 문자열 기준 왼쪽 공백만을 제거하고, rstrip() 함수는 오른쪽 공백만을 제거한다.(단, 인자가 없는 경우)

 

string = 'Dave'
print(string.upper())

string2 = 'Dave'
print(string.lower())

 

  • upper(), lower()

```

결과 :

DAVE

dave

 

```

 

upper() 함수는 해당 문자열에서 대문자는 그대로 놔두고, 소문자만 대문자로 변경하는 함수이다.

lower() 함수는 해당 문자열에서 소문자는 그대로 놔두고, 대문자만 소문자로 변경하는 함수이다.

 

string = 'Dave goes to Korea'
print(string.split())
print(string.split()[3])


string2 = 'Dave/goes/to/Korea'
print(string2.split('/'))


string3 = '10, 11, 22, 33, 44'
split_string = string3.split(',')

for index, split_item in enumerate(split_string):
    split_string[index] = int(split_item)

print(split_string)

 

  • split()

```

결과:

['Dave', 'goes', 'to', 'Korea']

Korea

['Dave', 'goes', 'to', 'Korea']

[10, 11, 22, 33, 44]

 

```

 

split() 함수는 해당 문자열에서 공백을 기준으로 문자열을 나눈 후, 리스트로 반환한다.(단, 인자가 없는 경우 )

만약, split() 함수의 인자가 존재하면 해당 인자를 기준으로 문자열을 나눠서 리스트로 반환한다.

 

string = 'david goes to Korea'
print(string.replace('david', 'dave'))

string2 = '(dave)'
print(string2.replace('()', ''))
print(string2.replace('(', '').replace(')', ''))

 

  • replace()

```

결과 :

dave goes to Korea

(dave)

dave

 

```

 

replace() 함수는 해당 문자열의 일부분을 바꿔주는 함수이다.

만약, 해당 문자열에서 연결될 문자를 바꾸려면 replace() 함수의 인자로 연결된 문자가 동일하게 들어가야 한다. 

그렇지 않으면 해당 문자열에서 어떠한 변화도 발생하지 않으며, 원래의 문자열이 그대로 출력된다.

[ex. print(string2.replace('()', ''))의 결과가 (dave)인것을 참고할 것]

 

댓글