Как преобразовать строку в список, такой как: [foo (a,b),a,b, c, d]

#python #string #list

#python #строка #Список

Вопрос:

Мне нравится преобразовывать заданную строку, содержащую подстроку, такую как ‘foo (a,b)’, например: строка может быть "foo(a,b),a,b,c,d" или "a,b,c,foo(a,b)" или "a,b,foo(a,b),c,d" в списке.

 stripped = s.replace(" ", "")
new_list = stripped.split(",")
 

#Это мой код, и я только удаляю все пробелы и разделяю строку

Ожидаемый результат:

 ['foo(a,b)','a','b','c','d'] or ['a','b','c','foo(a,b)','d'] or ['a','b','c','d','foo(a,b)']
 

Комментарии:

1. Немного неясно, с какими именно форматами вы работаете, но вы пробовали просто делать s.split() ?

2. вы имеете в виду, что у вас есть строка as "foo(a,b), a, b , c, d" , и вы хотите, чтобы она была преобразована в список подстрок as ["foo(a,b)", "a", "b", "c", "d"] ? Если да, то вы можете сделать: s.split(", ")

3. @MoinuddinQuadri У меня есть строка в формате «foo (a,b),a,b, c, d» без пробелов

4. вы все еще не прояснили свой вопрос

5. @MoinuddinQuadri когда я пытался преобразовать свою строку «f (a,b),b, c, d» в список, используя приведение типа к списку, я получал результат в виде: [f, o, o, (,a,b,),a,b, c, d,] чего я не хотел. И я предположил, что выполнение split(‘,’) также разделит foo(a,b), чего я тоже не хотел. Ну, вы были правы!! и split(«,» ) работает над разделением моей строки запятыми на список

Ответ №1:

Регулярное выражение кажется самым простым способом:

 >>> import re
>>> re.findall("[^,]*(.*)[^,]*|[^,] ", s)
['foo(a,b)', 'a', 'b', 'c', 'd']
 

Для чего-то более сложного вы можете захотеть взглянуть на реальный анализатор языка.

Ответ №2:

Вопрос не так ясен, особенно ваш опубликованный код.

Если исходная строка «foo (a,b),a,b,c, d» без пробелов, использование split(«,») создает список как [‘foo (a’, ‘b)’, ‘a’, ‘b’, ‘c’, ‘d’] .

Решение полностью жестко запрограммировано, поэтому мне это не нравится…

мое предложение:

s = «foo(a,b),a,b, c, d»

stripped = s.split(«,»)

combo = зачищенный [0] «,» зачищенный [1] зачищенный.удалить (зачищенный [0]) зачищенный.удалить (зачищенный [0]) зачищенный.вставить (0, combo) печать (зачищенный)

Комментарии:

1. foo(a,b) может встречаться в любом месте строки