728x90
반응형

 

* 본 포스팅은 주피터 노트북에서 진행하였다.

from bs4 import BeautifulSoup
html = """<html> <head><title class="t" id="ti">test site</title></head> <body> <p>test</p> <p>test1</p> <p>test2</p> </body></html>"""
soup = BeautifulSoup(html,'lxml')
tag_title = soup.title
print(tag_title['class'])

tag_title.get('class') #get으로 class의 속성을 가져와라

#둘다 같은 결과

만약 오류가 뜬다면 이대로 입력해주자! 주피터 노트북에서는 코드 앞에 !을 붙이면 된다. cmd로 할 경우 !을 빼면 된다.

 

!pip install beautifulsoup4

!pip install lxml

 

tag_title.attrs #attribute

 

이 둘의 차이는 

 

tag_title.get('class1') #속성이 없는 클래스 호출할 때 get은 오류안뜸

tag_title['class1'] #오류뜸

 

tag_title.get('class1',default="hi") #값이 없을 때

 

data_text = tag_title.text
data_text

data_text = tag_title.string
data_text

같은 값을 가져오지만 타입이 다르다

 

data_text = tag_title.text
data_string = tag_title.sring
print("text : ",data_text, type(data_text))
print('string : ',data_string, type(data_string))

 

tag_p = soup.p
tag_p

 

data_text = tag_p.text
data_string = tag_p.string
print('text : ',data_text, type(data_text))
print('string : ',data_string, type(data_string))

 

html = """<html> <head><title>test site</title></head> <body> <p><span>test1</span><span>test2</span></p> </body></html>"""
soup = BeautifulSoup(html,'lxml')
tag_p = soup.p
tag_p

 

data_text = tag_p.text
data_string = tag_p.string
print('text : ',data_text, type(data_text))
print('string : ',data_string, type(data_string))

 

조건문을 활용하여 데이터를 확인할 수 있다. 아래의 코드는 span태그가 있는지의 여부를 묻는다.

if tag_p.span.string !=None:
    print('있다')

 

contents 속성과 children 속성을 이용하여 자식태그를 가져올 수 있다.

 

contents 속성을 이용하여 list 형태로 자식 태그를 가져온다.

tag_p_children = soup.p.contents
print(tag_p_children)

 


tag_p_children = soup.p.children
tag_p_children #iterate

 

 

문제 ) 반복문을 이용하여 둘다 출력하기

예시

a_tuple = (1,2,3)
b_iterator = iter(a_tuple)
print(b_iterator.__next__())
print(b_iterator.__next__())
print(b_iterator.__next__())

 

이것을 응용하자

 

tag_p_contents = soup.p.contents
tag_p_contents #[<span>test1</span>, <span>test2</span>]

tag_p_children = soup.p.children
tag_p_children # <list_iterator at 0x243f02ea220>
for i in tag_p_contents:
    print(i)

for i in tag_p_children:
    print(i)

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북을 이용하였다. 이 코드로는 파이참에서도 실행이 가능하다.

 

펙토리얼을 구현하는 방법은 크게 반복문을 이용하는 것과 재귀함수를 이용하는 것이 있다.

 

오늘 이 두가지 방법을 구현해 보았다!

 

1. 반복문 이용하기

def factorial1(n):
    fact = 1
    for i in range(1, n+1):
        fact = fact*i
    return fact
n=5    
print('{}! = {}'.format(n,factorial1(5)))

 

2. 재귀함수 이용하기

def factorial2(n):
    if n<=1: # 종료조건
        return 1
    else :
        return n* factorial2(n-1) #n*(n-1)!
n=5
print('{}! = {}'.format(n,factorial2(5)))

728x90
반응형
728x90
반응형

시작하기 앞서 주피터 노트북을 기반으로 진행하였고 여기있는 코드들은 파이참에 해도 무관하다

 

1. 모음일 경우 반복문을 종료

st = 'Programming'
for ch in st:
    if ch in ['a','e','o','u']:
        break;
    print(ch)
print('종료')

 

2. 문자열의 모음의 갯수를 구하기

## 문자열의 모음의 갯수를 구하기
st = 'Programmuroing'
cnt=0
for ch in st:
    if ch in ['a','e','o','u']:
        cnt=cnt+1
print('모음의 갯수는 ',cnt)

728x90
반응형
728x90
반응형

주피터 노트북에서 파이썬 예제를 돌려볼 것이다.

 

1. 구구단(2단~9단)

for i in range(2,10):
    for j in range(1,10):
        print('{}*{}={:2d}'.format(i,j,i*j),end = ' ')
    print('\n')

 

2. 2부터 100까지 소수 구하기

primes=[]
for n in range(2,10):
    #일단 n을 소수라고 두자
    is_prime = True
    for num in range(2,n): #2~(n-1) 사이의 수 num에 대하여
        if n%num==0: #이 수중 n의 약수가 있으면
            is_prime = False

    if is_prime:
        primes.append(n)
print(primes) # 주피터 노트북에서는 print를 안쓴다.

 

3. while문으로 누적합 구하기

result = int(input('누적할 숫자를 입력하세요'))
i=1
sum=0
while i<=result:
    sum += i
    i=i+1
    print('i={}, sum={}'.format(i,sum))

 

728x90
반응형
728x90
반응형

function.py 에 입력한 코드이다.

 

이번엔 함수와 함수에 list를 응용할 것이다.

 

def a(i):
    print(i);

a(7); # 함수 호출
a([1,2,3,4,5]); #리스트

 

입력한 변수의 값까지 총합을 구하기

def sum(n):
    s = 0
    for i in range(1,n+1):
        s += i
    return s
print(sum(10))

 

list를 이용하여 list 안의 값들의 총합을 구하기

list = [1,2,3,4,5,11,20]
def sum(list):
  sum = 0
  for n in list:
    sum = sum + n
  return sum
print(sum(list))

728x90
반응형
728x90
반응형

for.py에 저장한 코드이다.

 

이번에는 for문을 사용할 것이다.

 

for _ in range(2):
    print('여러분 안녕하세요?')

 

for i in range(3):
    print('hi 여러분 안녕하세요?',i)

 

for i in range(7):
    if i%5==0 :
        print(i)
    else:
        print('5의 배수가 아닙니다.')

 

list 이용해보기

z = list(range(0,5,2)); #list(배열)로 만들어주는 함수 0부터 5까지 2씩증가
print(z)

 

#-2부터 -10까지 2씩 감소해서 출력
for i in range(-2,-10,-2):
    print(i)

 

#문제 range와 for in을 이용하여 1~10까지의 총합을 구하기

sum=0
for i in range(1,11):
    sum += i
    print('i={},s={}'.format(i,sum)); #print(sum)

728x90
반응형

+ Recent posts