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)
Просто мысль. Удачи!