Удаление строки из текста

Скажем, у меня есть текстовый документ. У меня есть строка. Я хочу удалить текст в этой строке и заменить его другим текстом. Как мне это сделать? В документах об этом ничего нет, заранее спасибо!


person Pro-grammer    schedule 16.03.2014    source источник
comment
Пробовали ли вы открыть два файла (исходный и целевой), а затем использовать функцию readline для просмотра каждой строки в исходном файле, выполнить поиск/замену и записать их в место назначения с помощью writeline?   -  person metatoaster    schedule 16.03.2014
comment
Как сейчас написано, этот вопрос немного вводит в заблуждение. На самом деле это продолжение этого вопроса (см. комментарии).   -  person ekhumoro    schedule 16.03.2014


Ответы (2)


Непроверенный: читает строки файла с помощью .readlines(), а затем заменяет индекс номера строки в этом списке. Наконец, он объединяет строки и записывает их в файл.

with open("file", "rw") as fp:
    lines = fp.readlines()
    lines[line_number] = "replacement line"
    fp.seek(0)
    fp.write("\n".join(lines))
person Ramchandra Apte    schedule 16.03.2014
comment
Несмотря на то, что она не проверена, сама логика должна работать, даже если фактический код может не работать, поэтому +1. - person Truerror; 16.03.2014
comment
Если замена сократит содержимое, не останется ли часть исходного файла в конце, потому что он не был перезаписан? - person three_pineapples; 16.03.2014
comment
@three_pineapples Думаю, ты прав. Вы, вероятно, захотите удалить оригинал вместо поиска, но основная идея остается, поэтому +1. - person Oliver; 16.03.2014
comment
Хотя в этом ответе нет ничего плохого, на самом деле он не имеет отношения к вопросу (который касается управления редактором qscintilla). - person ekhumoro; 16.03.2014

Чтобы заменить строку в QScintilla, вам нужно сначала выбрать строку, например:

    # as an example, get the current line
    line, pos = editor.getCursorPosition()
    # then select it
    editor.setSelection(line, 0, line, editor.lineLength(line))

Как только строка выбрана, вы можете заменить ее на:

    editor.replaceSelectedText(text)

Если вы хотите заменить строку другой строкой (которая будет удалена в процессе):

    # get the text of the other line
    text = editor.text(line)
    # select it, so it can be removed
    editor.setSelection(line, 0, line, editor.lineLength(line))
    # remove it
    editor.removeSelectedText()
    # now select the target line and replace its text
    editor.setSelection(target, 0, target, editor.lineLength(target))
    editor.replaceSelectedText(text)        
person ekhumoro    schedule 16.03.2014