[Tutor] Please take a look at this function

Hugo Arts hugo.yoshi at gmail.com
Fri Dec 18 04:49:29 CET 2009


On Fri, Dec 18, 2009 at 3:44 AM, Richard D. Moores <rdmoores at gmail.com> wrote:
> On Thu, Dec 17, 2009 at 18:26, Kent Johnson <kent37 at tds.net> wrote:
>>
>> On Thu, Dec 17, 2009 at 7:57 PM, Richard D. Moores <rdmoores at gmail.com> wrote:
>> > def prestrings2list(a_str):
>> >     word = ""
>> >     list_of_strings = []
>> >     length_of_a_string = len(a_str)
>> >     for i, char in enumerate(a_str):
>> >         if i == length_of_a_string - 1:
>> >             word += char
>> >             word = word.rstrip()
>> >             list_of_strings.append(word)
>> >         elif char == ",":
>> >             word = word.strip()
>> >             list_of_strings.append(word)
>> >             word = ""
>> >         elif char != " ":
>> >             word += char
>> >         elif char == " " and word != "" and a_str[i - 1] != " ":
>> >             word += char
>> >     return list_of_strings
>>
>> I think you want
>> def prestrings2list(a_str):
>>    return [i.strip() for i in a_str.split(',')]
>
> Wow, Kent!  Perfect except for the extra interior spaces in items.
> E.g., 'synthetic   DNA'. Could you fix that?

Probably easiest to use a regular expression to fix that particular
thing, as in:

import re
mult_space = re.compile(r'\s+')
def prestrings2list(a_str):
    return [re.sub(mult_space, ' ', x).strip() for x in a_str.split(',')]

Hugo


More information about the Tutor mailing list