#python #string #list
#python #строка #Список
Вопрос:
я хочу дать
input = '1;Go home;Do assignment; go to class'
и получаем output = ['1','Go home','Do asssignment','go to class']
. с помощью split я получаю n, а также splitlines не дает требуемого вывода.
Комментарии:
1. Похоже, вам следует разделить на
;
Ответ №1:
Вы хотите использовать split
by ;
и strip
пробелы в начале и конце результирующих строк. strip
также избавится от завершающих символов новой строки, если таковые имеются.
>>> inp = '1;Go home;Do assignment; go to class'
>>> [x.strip() for x in inp.split(';')]
['1', 'Go home', 'Do assignment', 'go to class']
Кроме того, не используйте input
в качестве имени переменной, это встроенное.
Ответ №2:
Проблема в новой строке, а не в разделении, вы можете использовать strip()
:
string = '1;Go home;Do assignment; go to classn'
print string.strip().split(';')
В случае, если входные данные не соответствуют пробелам, как в вашем примере (за некоторыми точками с запятой может следовать пробел: «перейти к классу"), вы можете сделать:
import re
string = '1;Go home;Do assignment; go to classn'
print re.split(r';s*', string.strip())
Комментарии:
1. Перед 'go' по-прежнему стоит пробел 🙂
2. Я думаю, что использование понимания списка, подобного ответу timgeb, может быть более простым
3. @heroandtn3 и я чувствую, что использовать простое регулярное выражение на самом деле не сложно 🙂 Теперь серьезно, ответ timgeb хороший, возможно, даже работает лучше, потому что он не использует regex , но мне не нравится явная итерация по токенам и "очистка" каждого из них. Это просто вопрос личного вкуса. Если вам это нравится больше - используйте это, но как хороший программист вы должны знать другие альтернативы.
Ответ №3:
Я знаю, вы говорили, что пробовали split, но когда я использую это:
myInput = '1;Go home;Do assignment; go to class'
myInput.split(";")
Я получаю это в качестве выходных данных:
['1', 'Go home', 'Do assignment', ' go to class']
Ответ №4:
Вы могли бы вызвать rstrip для вашей входной строки, чтобы удалить завершающий символ n, а затем выполнить разделение.