擅长:python、mysql、java
<p>这里有一个使用regex的非常简单的解决方案。你知道吗</p>
<p>这个解决方案的好处是不必显式地命名变体。如果你知道那个人名字的开头,你应该很好。你知道吗</p>
<pre><code>from collections import Counter
import re
TEXT = '''
Blah Tim blah blah Timmy blah Timster blah Tim
Blah Bill blah blah William blah Billy blah Bill Bill
'''
tim_search = '(Tim([a-z]*)?(?=\ ?))'
bill_search = '((B|W)ill([a-z]*)?(?=\ ?))'
def name_counter(regex_string):
return Counter([i for i, *j in re.findall(regex_string, TEXT)])
name_counter(tim_search)
Counter({'Tim': 2, 'Timmy': 1, 'Timster': 1})
name_counter(bill search)
Counter({'Bill': 3, 'Billy': 1, 'William': 1})
</code></pre>