2010-08-13 7 views
8

Я читаю строку из целых чисел, таких как "3 ,2 ,6 ", и хочу их в списке [3,2,6] как целые числа. Это легко взломать, но что такое «пифонический» способ сделать это?«pythonic» метод для синтаксического анализа целых целых чисел, разделенных запятыми, в список целых чисел?

ответ

21
mylist = [int(x) for x in '3 ,2 ,6 '.split(',')] 

И если вы не уверены, вы будете иметь только цифры (или хотите отказаться от других):

mylist = [int(x) for x in '3 ,2 ,6 '.split(',') if x.strip().isdigit()] 
+3

Я думаю, вы его немного назад: ' '3,2,6'.split (', ')' –

+1

@orangeoctopus Он отлично работает в любом случае, 'int' отбрасывать окружающие пробельные – delnan

+0

@orangeoctupus - Да , Я отредактировал его, когда понял это. Но, по-видимому, я быстро, как лиса, поэтому не показываю, что я отредактировал его (по крайней мере, для меня ...);) –

6

Хотя настраиваемое решение научит вас о Python, для производства кода, используя модуль csv - лучшая идея. Данные, разделенные запятыми, могут стать более сложными, чем первоначально.

+0

Интересно, как целые числа, разделенные запятой, получают какой-либо комплекс? –

+1

@ Анураг: Кто сказал, что они должны быть целыми? ОП предоставил только данные образца ... – katrielalex

+0

@ Анураг: «научить его ловить рыбу ...» - когда-либо слышал эту басню? Это то, что я пытаюсь сделать здесь. Просто разбор строки запятых редко * * задача, которую пытаются решить, за этим стоят более сложные требования. Если я ошибаюсь, никакого вреда не было сделано, другие ответы обеспечивают более простой подход –

13
map(int, myString.split(',')) 
+1

+1 для функционального стиля –

+5

@Matt: фактически, в то время как лично Мне нравится функциональный стиль, список понятий больше Pythonic –

+0

@Eli, согласен 100% –

Смежные вопросы