def parse_numbers(numbers_string):
return [int(n.strip()) for n in numbers_string.split(',')]
assert parse_numbers('1, 2, 3') == [1, 2, 3]
def parse_language(language_string):
language, numbers_string = language_string.split(':')
return language.strip(), parse_numbers(numbers_string)
assert parse_language('English : 1, 2, 3') == ('English', [1, 2, 3])
def split_languages(languages):
return [language.strip() for language in languages.split(';')]
assert (
split_languages('English : 1, 2; Dutch : 5, 7') ==
['English : 1, 2', 'Dutch : 5, 7']
)
def parse_languages(languages):
return dict(
parse_language(language)
for language in split_languages(languages)
)
assert (
parse_languages('English : 1, 2; Dutch : 5, 7') ==
{
'English' : [1, 2],
'Dutch' : [5, 7]
}
)
def parse_category(category_tuple):
category, languages = category_tuple
return category, parse_languages(languages)
assert (
parse_category( ('person', 'English : 1, 2; Dutch : 5, 7') ) ==
(
'person',
{
'English' : [1, 2],
'Dutch' : [5, 7]
}
)
)
def parse_tuples(tuples):
return dict(parse_category(category) for category in tuples)
if __name__ == "__main__":
tuplist = [('person', u'English : 1, 2, 3 ; Dutch : 5, 6, 7'), ('home', u'English : 8, 9, 10; Dutch: 11, 12, 13')]
print parse_tuples(tuplist)
Comments