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

#python #streamlit

#питон #освещенный потоком

Вопрос:

Я использую Streamlit и Python для создания графического интерфейса для моего проекта. У меня есть конкретный вопрос о файлах .txt, это код, над которым я сейчас работаю:

 with open('data/test20/testing.txt', 'w ') as txt_reader:
    string = st.text_input('ENTER TEXT', value='', max_chars=None, key=None, type='default')
    txt_reader.write(string)
    st.write(string)
 

При этом я запрашиваю вводное предложение, а затем добавляю это предложение в свой testing.txt досье. После предложения должно быть что-то еще, чтобы моя модель могла анализировать его. Так, например, если пользователь вводит «Настроить было легко«, в моем текстовом файле у меня должно быть «Настроить было легко.####Set= O up = O was = O easy = O . = O» Поэтому мне нужно добавить «####» и каждый слово, включая знаки препинания, и добавьте «= O» к каждому из этих пунктов.

Я собираюсь использовать res = string.split() для разделения предложения на слова и знаки препинания, но как я могу добавить все остальное?

Заранее спасибо!

Комментарии:

1. words = ['Set', 'up', 'was', 'easy', '.']; ' '.join([w '=O' for w in words])

Ответ №1:

Мы можем разделить проблему на 2 части: 1. Разделить текст на список слов и знаков препинания и 2. объединить их и добавить =O после каждого.

В первой части вы упомянули string.split() , но, пожалуйста, обратите внимание, что этот метод будет разбивать предложение только на пробелы, а не на знаки препинания, поэтому Set up was easy. вы ['Set', 'up', 'was', 'easy.'] получите не то, что вы хотите. Один из простых способов получить желаемый результат — это использовать модуль re, вот пример кода:

 import re
sentence = 'Set up was easy.'
words = re.findall(r"[w'] |[.,!?;]", sentence)
 

В результате этот words список был ['Set', 'up', 'was', 'easy', '.'] бы просто великолепен.

Для второй части мы хотим взять каждый элемент списка и связать его с «=O», добавив все элементы в одну большую строку. Мы можем сделать это с помощью этого кода:

 result = sentence   "####"   " ".join([word   "=O" for word in words])
 

Наконец, мы можем сократить приведенный выше код до:

 import re

sentence = "Set up was easy."
sentence  = "####"
result = sentence   " ".join([word   "=O" for word in re.findall(r"[w'] |[.,!?;]", sentence)])