преобразование строки строк в список строк без получения символа новой строки

#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, а затем выполнить разделение.