brandizzi icon

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

brandizzi | PRO | 01/21/14 06:24:18 PM UTC | 0 ⭐ | 640 👁️ | Never ⏰ | []
Python |

1.65 KB

|

None

|

0 👍

/

0 👎

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