#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) может встречаться в любом месте строки