Как выбрать и добавить запись в файл уценки в Python? - PullRequest
0 голосов
/ 12 июля 2019

У меня есть файл data.md следующим образом:

## intent:greet
- hey
- hello
- hi
- good morning
- good evening
- hey there

## intent:goodbye
- bye
- goodbye
- see you around
- see you later

## intent:affirm
- yes
- indeed
- of course
- that sounds good
- correct

## intent:deny
- no
- never
- I don't think so
- don't like that
- no way
- not really

Теперь я хочу добавить новый пример yes, I affirm в ## intent:affirm, чтобы он стал следующим:

## intent:affirm
- yes
- indeed
- of course
- that sounds good
- correct
- yes, I affirm

Как добиться этого в Python?

В настоящее время я понятия не имею, с чего начать, так как я новичок в Python, поэтому не сделал ничего конкретного, прежде чем искать здесь помощь, кроме поиска в Интернете по запросу.соответствующие статьи.

Ответы [ 2 ]

2 голосов
/ 12 июля 2019

Это немного сложнее, чем кажется, так как вы не можете просто редактировать файл в python (если он не в конце). Таким образом, вы можете сначала прочитать файл в массив, а затем переписать его. Например:

# Load the file into file_content
file_content = [ line for line in open('data.md') ]

# Overwrite it
writer = open('data.md','w')

for line in file_content:
    # We search for the correct section
    if line.startswith("##"):
        section = line.strip()

    # Re-write the file at each iteration
    writer.write(line)

    # Once we arrive at the correct position, write the new entry
    if section == "## intent:affirm" and line.strip() == "- correct":
        writer.write("- yes, I affirm\n")

writer.close()
0 голосов
/ 12 июля 2019

Вам придется переписать файл, если у вас все еще есть доступ, используйте копирование / вставку и в новый файл вставьте скопированный файл и части, которые вы хотите добавить. Вы не можете изменить это, потому что это вещь, а не Python. Вы можете заменить файл, используя терминал или командную строку в вашей ОС.

Windows:

REPLACE [Drive:][path]SourceFiles [Drive:][path2] [/A] [/P] [/R] [/W] где:

/A - любые пропущенные файлы

/P запрашивает подтверждение

/R - заменить даже файл только для чтения

/W - это ожидание / пауза (первоначально использовалось для дискет)

Linux:

Создайте и сохраните новый файл в папке tmp, затем в терминале:

cat /tmp/new-file | sudo tee /home/user/(insert more folders and file if needed)

OS X / Mac:

Я не уверен, как это сделать, поскольку у меня никогда не было Mac, но Google или, возможно, некоторые сообщества в StackExchange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...