python: распаковка строки в список

Ответ на вопрос об элементах с несколькими значениями в файле конфигурации (который точно соответствует моим потребностям) предлагает "распаковать строку из конфигурации". Я прочитал документ для распаковки списков аргументов, предложенных в нескольких местах, но я не понимаю, как это связано с моей проблемой.

Я уверен, что это должно быть очевидно: наличие строки str = "123,456"как я могу превратить его в список [123,456] (количество элементов, разделенных запятой в строке, может отличаться)

Спасибо.

4 ответа

Решение

Вы хотите список строк или список целых?

Если вы просто хотите получить список строк, это очень просто:

my_list = my_string.split(',')

Если вы хотите преобразовать их в целые, вам нужно:

my_list = map(int, my_string.split(','))

(Кроме того, не используйте str в качестве имени переменной, поскольку она затеняет встроенный str() функция).

[int(x) for x in str.split(",")]

Вы в основном применяете функцию int к каждому элементу, созданному разделением вашей строки.

Результат просто str.split(',') было бы ["123","456"],

Как отметил Даниэль Розман, вы должны быть осторожны, чтобы не использовать имена переменных или методов, которые непреднамеренно затмевают встроенные методы, как, например, str,

Самый простой способ будет использовать split(),

unpacked = str.split(',')

Хотя я согласен с другими ответами, вы должны также обрабатывать исключения в случае недопустимого представления строки предполагаемого числа. Взять, к примеру, следующий фрагмент:

number_string = "123,456,x21"
delimiter = ","
number_list = []
for item in number_string.split(delimiter):
    try:
        my_num = int(item)
        number_list.append(item)
    except ValueError, e:
        # you can choose to just pass or handle the error like so
        print "Skipping %s: %s" % (item, e.message)

Просто мысль. Удачи!

Другие вопросы по тегам