brandizzi

Re: http://stackoverflow.com/questions/21265376

Jan 21st, 2014
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.65 KB | None | 0 0
  1. def parse_numbers(numbers_string):
  2.     return [int(n.strip()) for n in numbers_string.split(',')]
  3.  
  4. assert parse_numbers('1, 2, 3') == [1, 2, 3]
  5.  
  6. def parse_language(language_string):
  7.     language, numbers_string = language_string.split(':')
  8.     return language.strip(), parse_numbers(numbers_string)
  9.  
  10. assert parse_language('English : 1, 2, 3') == ('English', [1, 2, 3])
  11.  
  12. def split_languages(languages):
  13.     return [language.strip() for language in languages.split(';')]
  14.  
  15. assert (
  16.         split_languages('English : 1, 2; Dutch : 5, 7') ==
  17.                 ['English : 1, 2', 'Dutch : 5, 7']
  18. )
  19.  
  20. def parse_languages(languages):
  21.     return dict(
  22.         parse_language(language)
  23.         for language in split_languages(languages)
  24.     )
  25.  
  26. assert (
  27.         parse_languages('English : 1, 2; Dutch : 5, 7') ==
  28.                 {
  29.                         'English' : [1, 2],
  30.                         'Dutch' : [5, 7]
  31.                 }
  32. )
  33.  
  34. def parse_category(category_tuple):
  35.     category, languages = category_tuple
  36.     return category, parse_languages(languages)
  37.  
  38. assert (
  39.         parse_category( ('person', 'English : 1, 2; Dutch : 5, 7') ) ==
  40.                 (
  41.                         'person',
  42.                         {
  43.                                 'English' : [1, 2],
  44.                                 'Dutch' : [5, 7]
  45.                         }
  46.                 )
  47. )
  48.  
  49.  
  50. def parse_tuples(tuples):
  51.     return dict(parse_category(category) for category in tuples)
  52.    
  53. if __name__ == "__main__":
  54.     tuplist = [('person', u'English : 1, 2, 3 ; Dutch : 5, 6, 7'), ('home', u'English : 8, 9, 10; Dutch: 11, 12, 13')]
  55.     print parse_tuples(tuplist)
Add Comment
Please, Sign In to add comment