35 lines
781 B
Python
35 lines
781 B
Python
import re
|
|
from collections import defaultdict, Counter
|
|
|
|
|
|
def count_words_v1(sentence):
|
|
count = defaultdict(int)
|
|
for word in sentence.split():
|
|
count[word.lower()] += 1
|
|
return count
|
|
|
|
|
|
def count_words_v2(sentence):
|
|
regex = r"[\w|']+"
|
|
count = defaultdict(int)
|
|
for word in re.findall(regex, sentence):
|
|
count[word.lower()] += 1
|
|
return count
|
|
|
|
|
|
def count_words_v3(sentence):
|
|
"""Augmented by trey's regex."""
|
|
regex = r"\b[\w'-]+\b"
|
|
count = defaultdict(int)
|
|
for word in re.findall(regex, sentence):
|
|
count[word.lower()] += 1
|
|
return count
|
|
|
|
|
|
def count_words_v4(sentence):
|
|
"""And the most compact yet pythonic solution."""
|
|
return Counter(re.findall(r"\b[\w'-]+\b", sentence.lower()))
|
|
|
|
|
|
count_words = count_words_v4
|