Как удалить первую строку из текста?
У меня есть одна большая строка в формате str
"Какой-то текст 1
Какой-то текст 2
Какой-то текст 3
Какой-то текст 4
и тд"
Как удалить первую строку в строке?
Ответы (6 шт):
Можно обрезать по первому совпадению \n.
s = """line 1
line 2
line 3
line 4
etc"""
print(s.split('\n', 1)[1])
Либо
Можем найти индекс первого символа переноса строки \n.
print(s[s.index('\n') + 1:])
Вывод (в обоих случаях):
line 2
line 3
line 4
etc
Решение через определение функции:
def first_row_del(string):
return string[string.index('\n')+1::]
test = """Какой-то текст 1
Какой-то текст 2
Какой-то текст 3
Какой-то текст 4
и тд"""
print(first_row_del(test))
Но по сути, это повторение вышесказанного.
Предложенные решения верны для случая с несколькими строками, но если строка по итогу будет одна, то str.index() метод выкинет исключение ValueError, если такое поведение для Вас не является возможным, то можно использовать и предложенные ответы.
Иначе я советую воспользоваться str.find().
string = """Какой-то текст 1
Какой-то текст 2
Какой-то текст 3
Какой-то текст 4
и тд"""
idx = string.find('\n')
string = string[idx + 1:]
Однако, в таком случае эта строка сохранится, поскольку str.find() возвращает -1 в случае отсутствия элемента. В таком случае ещё стоит добавить проверку.
Ещё пара вариантов, причём работающих без выкидывания исключения и тогда когда нет '\n' в строке:
s = """Какой-то текст 1
Какой-то текст 2
Какой-то текст 3
Какой-то текст 4
и тд"""
# partition создаёт кортеж: (<то, что до>, <символ>, <то, что после>)
# мы берём через [2] ту часть, которая после искомого символа
print(s.partition('\n')[2])
# слайсы работают без ошибок даже при выходе индекса за диапазон
print('\n'.join(s.split('\n')[1:]))
Предпологая, что ваша большая (многострочная) строка находится в переменной str_, решение может быть простое:
str_.split("\n", 1)[1]
Тест:
>>> result = str_.split("\n", 1)[1]
>>> print(result)
Какой-то текст 2 Какой-то текст 3 Какой-то текст 4 и тд
Объяснение:
Метод .split() разделит вашу строку на 2 части — до первого \n и после него:
str_.split("\n", 1) # 1 значит разбить только для первого \n
Тем получим список этих двух частей — выберем (применением [1]) только вторую часть.
Вы можете:
- записать вашу многострочную строку
sв текстовой файл, затем - пропустить одну (т.е. первую) строку этого файла и наконец
- читать остаток файла, получая результат.
Для этого не надо использовать реальный файл, а фантомный (только в памяти) io.StringIO():
import io
f = io.StringIO(s)
next(f) # Пропустить первую строку
result = f.getvalue() # Читать остаток файла