python django 단어 수를 체크하는 Word Count 만들기 ( 2 )
이번 시간에는 python 내장 함수와 for문 딕셔너리 등 사용됩니다.
vscode 설치하기 : https://integer-ji.tistory.com/65
python 설치하기 : https://integer-ji.tistory.com/64
git 설치하기 : https://integer-ji.tistory.com/66
vscode 설정하기 : https://integer-ji.tistory.com/81
hello world 띄우기 : https://integer-ji.tistory.com/82
git 초기 설정 : https://integer-ji.tistory.com/83
page 이동 : https://integer-ji.tistory.com/84
☞ word count 실습 ( 1 ) : https://integer-ji.tistory.com/85
▶▶ 해당 Word Count가 끝났다면 해볼 만한 Project ◀◀
https://integer-ji.tistory.com/88
진짜 wordcount 시작하기
def new(request):
full_text = request.GET['fulltext']
word_list = full_text.split()
return render(request, 'new.html', { 'fulltext' : full_text ,'wordlist': word_list } )
new 함수 새로운 소스 추가
word_list는 full_text를 split 한걸 넣어라
( 파이썬 문법 공부는 점프 투 파이썬으로 진행하였습니다. 좋은 거 많음 )
split()는 문자열을 자르는 함수입니다. full_text에는 현재 home.html에서 textarea에 적은 문자열이 있겠죠?
그걸 공백 기준으로 나눈다는 뜻입니다.
이 공백으로 나눈 word_list를 딕셔너리에 넣고 확인을 해보면
new.html에 wordlist를 띄우기 위해 {{wordlist}}를 입력하였고 확인 결과
하나의 문자열이었던 "워드카운트 python django"가
"워드카운트", "python", "django"로 나뉘어 있는 모습을 확인할 수 있습니다.
문자열이 list에 담겨 html에 출력될 때에는 리스트 형식으로 출력이 되었습니다.
하지만 wordcount란 단어의 개수를 세주어야 합니다.
단어 - 몇 개
단어 - 몇 개
이런 식으로 말이죠
len함수 사용
def new(request):
full_text = request.GET['fulltext']
word_list = full_text.split()
return render(request, 'new.html', { 'fulltext' : full_text ,'total': len(word_list) } )
딕셔너리에서 키값을 이용해 데이터를 가져올 때 len함수를 사용합니다.
len 함수란 해당 값이 몇 개 있나 개수를 세어주는 기능을 합니다.
지금 word_list에는 "워드카운트", "python", "django" 이렇게 총 3개가 있죠
그래서 len(word_list)의 값은 3개가 될 것입니다.
또한 이의 키값을 total로 바꿔주었습니다.
for문과 딕셔너리의 사용
def new(request):
full_text = request.GET['fulltext']
word_list = full_text.split()
word_dictionary = {}
for word in word_list:
if word in word_dictionary:
# Increase
word_dictionary[word] += 1
else:
# add to the dictionary
word_dictionary[word] = 1
return render(request, 'new.html', {'fulltext': full_text, 'total': len(word_list), 'dictionary': word_dictionary.items()} )
갑자기 난이도가 높아졌지만...
하나씩 설명드리자면
word_dictionary라는 빈 딕셔너리를 만들어 줍니다.
for 문을 이용해 word 안에 word_list를 담습니다.
word_list는 "워드카운트", "python", "django"의 값으로 위와 동일하다는 가정하에 진행하겠습니다.
그러면 for문은 한 번씩 돌면서
워드카운트
python
django를 담습니다.
하지만 담을 때 if문이 작동합니다.
for문을 돌며 word_dictionary에 담을 때
word가 같은 값이라면 기존의 값에 +1을 카운트해줍니다.
하지만 아니라면
해당 word는 1이라는 값을 준비해 줍니다.
그리고 'dictionary': word_dictionary.items()가 추가되었습니다.
파이썬의 딕셔너리는 한 쌍으로 이루어져 있습니다.
{ '키 1' : '값 1', '키 2' : '값 2' } 키를 이용해 값을 가져오는 형식입니다. 이게 한 쌍
이 쌍을 나누기 위해 items 함수를 사용하면
( '키 1' , '값 1' ) , ( '키 2' , '값 2' )으로 나눠줍니다.
파이썬 문법 공부해야 알 수 있습니다.
html에 불러오기
<h1>new page!</h1>
<a href="{% url 'home' %}">home</a>
<br>
{{fulltext}}
<br>
<br>
{% for word, countTotal in dictionary %}
{{ word }} - {{ countTotal }}
<br>
{% endfor %}
dictionary를 가져옵니다. dictionary에는 [ ( '워드카운트', 1), ('python', 1), ('django', 1) ]
값이 들어있습니다.
이 값들을 html에서 {% %} django 명령어 for문을 사용해
두 개로 나눠 반복합니다.
워드 카운트란 단어는 word로 들어가고 그와 같은 1은 countTotal에 들어갑니다.
또한 for문이 종료되었다는 걸 알리기 위해 {% endfor %}라고 적어줍니다.
페이지를 확인해보면
home로 이동하는 url 아래 입력한 문자(fulltext)가 나오며
이제 몇 번인지 체크를 한 값이 나오게 됩니다.
중복된 값을 넣어 다시 실행해 보면
views.py에서 for문으로 같은 단어가 들어올 경우 +1을 해주기 때문에
단어 수가 카운트됩니다.
git push
git init
git add .
git commit -m "코멘트"
git push origin master
사소한 것이라도 작업이 끝나면 git에 올리는 습관을 가지기!
끝
'코딩공부 > Python Django' 카테고리의 다른 글
[django 실습] 게시판 만들기 - views에 데이터 가져오기 (0) | 2020.02.18 |
---|---|
[django 실습] 게시판 만들기 - model, admin 설정 (0) | 2020.02.16 |
[django] 실습 Word Count 만들기 ( 1 ) (0) | 2020.02.15 |
[django 기초] 페이지 이동, git push, 템플릿 태그 (0) | 2020.02.14 |
[django 기초] vscode git 초기 설정, git push, git 강제 push (0) | 2020.02.13 |