Как можно изменить содержимое строки в текстовом файле?

Как удалить и записать заново строку с ответом в текстовом файле, содержащем информацию в формате "Вопрос - ответ" при изменении ответа?
  • 14 августа 2024 г. 9:33
Ответы на вопрос 3
Чтобы изменить содержимое строки в текстовом файле, вам необходимо открыть файл, считать его содержимое, затем изменить нужную строку и записать обновленное содержимое обратно в файл.

Например, вы можете использовать следующий код на Python:
```python
with open('file.txt', 'r') as file:
    lines = file.readlines()

# Находим индекс строки, которую нужно изменить
index_to_change = -1
for i, line in enumerate(lines):
    if 'Вопрос - ответ' in line:
        index_to_change = i
        break

if index_to_change != -1:
    new_answer = 'Новый ответ'
    lines[index_to_change] = lines[index_to_change].split(' - ')[0] + ' - ' + new_answer + '\n'

with open('file.txt', 'w') as file:
    file.writelines(lines)
```

Таким образом, в файле 'file.txt' будет изменена строка с ответом на новый.

Если же вы хотите полностью удалить и затем записать заново строку с ответом при изменении, вы можете использовать тот же код, но с добавлением удаления строки перед добавлением новой строки.
Например так: 

def update_answer(file_path, question, new_answer):
    with open(file_path, 'r') as file:
        lines = file.readlines()

    updated_lines = []
    question_found = False

    for line in lines:
        if line.startswith(question):
            updated_lines.append(f"{question} - {new_answer}\n")
            question_found = True
        else:
            updated_lines.append(line)

#если вдруг не найден добавляем в конец, если не надо убрать
    if not question_found:
        updated_lines.append(f"{question} - {new_answer}\n")

    with open(file_path, 'w') as file:
        file.writelines(updated_lines)

# юзать так
file_path = 'answers.txt'
question = 'Вопрос#2'
new_answer = 'новый ответ'
update_answer(file_path, question, new_answer)
Захватить файл монопольно, прочитать все строки из файла, найти нужную, изменить её, очистить файл, записать в него все строки, освободить файл. 
Чтобы меньше страдать фигнёй, освоить реляционные базы данных и использовать хотя бы sqlite.
Похожие вопросы