擅长:python、mysql、java
<p>这可以收紧,但应该很容易扩展到更多的用户名。在</p>
<pre><code>from collections import defaultdict
# Input string
all_messages = " dylankid: *random words* senpai: *random words* dylankid: *random words* senpai: *random words*"
# Expected users
users = ['dylankid', 'senpai']
starts = {'{}:'.format(x) for x in users}
D = defaultdict(list)
results = defaultdict(list)
# Read through the words in the input string, collecting the ones that follow a user name
current_user = None
for word in all_messages.split(' '):
if word in starts:
current_user = word[:-1]
D[current_user].append([])
elif current_user:
D[current_user][-1].append(word)
# Join the collected words into messages
for user, all_parts in D.items():
for part in all_parts:
results[user].append(' '.join(part))
</code></pre>
<p>结果是:</p>
^{pr2}$