Задать вопрос
@nikita1225

Как удалить первую строку из строки?

У меня есть одна большая строка в формате str
"Какой-то текст 1
Какой-то текст 2
Какой-то текст 3
Какой-то текст 4
и тд"
Как удалить первую строку в строке?
  • Вопрос задан
  • 1093 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 5
shabelski89
@shabelski89
engineer
ох
>>> long_str = '''Какой-то текст 1
... Какой-то текст 2
... Какой-то текст 3
... Какой-то текст 4
... и тд'''
>>> long_str
'Какой-то текст 1\nКакой-то текст 2\nКакой-то текст 3\nКакой-то текст 4\nи тд'
>>> long_str[long_str.find('\n')+1:]
'Какой-то текст 2\nКакой-то текст 3\nКакой-то текст 4\nи тд'
>>> print(long_str[long_str.find('\n')+1:])
Какой-то текст 2
Какой-то текст 3
Какой-то текст 4
и тд
>>>
Ответ написан
@dooMoob
s = "\n".join(s.split("\n")[1:])
Ответ написан
Комментировать
@agent_2203
a = '''1111
       2222
       3333
       4444'''

del(a.split("\n")[0])
Ответ написан
Комментировать
@Drill
Всем ранее ответившим... str.split
и join не нужен...
text.split('\n', 1)[1]
Ответ написан
@devdb
Корректно сделать так (str.splitlines):
s=' a b \r\n c d \n e f '
result = '\n'.join(s.splitlines()[1:])
Правда, переносы строк изменятся, если они были не '\n', но зато всё будет работать чётко и по лучшим рецептам Unicode.

Можно ещё с regexp:
import re
s=' a b \r\n c d \r e f '
template = r"[^\n\r]*(\r\n|\n\r|[\n\r])?"
result = re.sub( template, "", s, count=1)
Здесь после первой строки всё сохранится как было неприкосновенным, даже нестандартные переводы строк (которые не '\n').

Regex хорош тем, что всё можно настраивать как самим хочется. Выше приведён пример для часто встречающихся переводов строк, а вот для всех (надеюсь) вариантов переводов строк, включая даже нуль-символ, который тоже иногда может использоваться для разделения строк (и стандартная splitlines уже с таким не справится, а regex может):
import re
s=' a b \u0000 c d \n e f '
template = r"[^\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029\x00]*(\r\n|\n\r|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029\x00])?"
result = re.sub( template, "", s, count=1)


Или так, через re.split:
import re
s=' a b \r\n c d \n e f '
template = r"\r\n|\n\r|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029\x00]"
result = "".join( re.split( template, s, maxsplit=1 )[1:] )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы