Guest User

Untitled

a guest
Oct 22nd, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. import re
  2.  
  3. from types import NoneType
  4.  
  5. def parse_mapping(line):
  6. query_pattern, response_template = line.split('|', 1)
  7. query_pattern = '\\s+'.join(query_pattern.split())
  8. query_pattern = query_pattern.replace('<', '(?P<')
  9. query_pattern = query_pattern.replace('>', '>\\w+)')
  10. response_template = response_template.strip()
  11. response_template = response_template.replace('<', '%(') # I honestly don't fucking
  12. response_template = response_template.replace('>', ')s') # care anymore...
  13. return (re.compile(query_pattern, re.IGNORECASE), response_template)
  14.  
  15. def get_response(query, responses):
  16. response = None
  17. for query_pattern, response_template in responses:
  18. tokens = query_pattern.match(query)
  19. if type(tokens) is not NoneType:
  20. response = response_template % tokens.groupdict()
  21. break
  22. return response
  23.  
  24. sample_responses = []
  25.  
  26. sample_responses.append(parse_mapping('my name is <name> | Hello, <name>!'))
  27. sample_responses.append(parse_mapping('i like <unk_1> and <unk_2> | Oh yeah? Well I like <unk_1>, but absolutely hate <unk_2>... fuck <unk_2>!'))
  28.  
  29. get_response('my name is puxlit', sample_responses)
  30. get_response('i like Python and AI', sample_responses)
Add Comment
Please, Sign In to add comment