@nikita1225

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

У меня есть одна большая строка в формате str
"Какой-то текст 1
Какой-то текст 2
Какой-то текст 3
Какой-то текст 4
и тд"
Как удалить первую строку в строке?
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 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
и тд
>>>
Ответ написан
@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:] )
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 130 000 ₽
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
24 окт. 2020, в 20:52
27000 руб./за проект
24 окт. 2020, в 20:39
2000 руб./за проект
24 окт. 2020, в 20:39
2000 руб./за проект