Загрузка...

Converting a table into a text book. How????

Thread in Thematic questions created by samo4ka Tuesday at 6:14 PM. 46 views

  1. samo4ka
    samo4ka Topic starter Tuesday at 6:14 PM 373 Mar 30, 2020
    [IMG]
    Есть такая таблица с 400 вопросами. Столбик А это вопрос и варианты ответа. Столбик Б это верный ответ. Мне необходимо сделать так:
    ? Огнетушитель-это: _____

    - Переносное или передвижное устройство, предназначенное для тушения пожара оператором за счет выпуска огнетушащего вещества, приведения в действие и управления струей огнетушащего вещества.
    - Передвижное или передвижное устройство, предназначенное для тушения пожара оператором за счет выпуска огнетушащего вещества, приведения в действие и управления струей огнетушащего вещества
    + Переносное или передвижное устройство, предназначенное для тушения очага пожара оператором за счет выпуска огнетушащего вещества, с ручным способом доставки к очагу пожара, приведения в действие и управления струей огнетушащего вещества.

    Всё это в формат TXT чтобы выглядело так:
    [IMG]
    Как всё это лучше реализовать и через что?
     
  2. renameduser_8001066
    так еще раз задача тут какая ? не могу понять
     
  3. Aisan
    Напиши в чатгопоту, пусть сделает тебе скрипт по переводу гугл таблицы в текст
    И пример оформления ему скинь
     
  4. renameduser_8001066
    1. ChatGPT
      avatarrenameduser_8001066 Да, это проще всего автоматизировать, руками 400 вопросов лучше даже не трогать.

      Самый удобный вариант — через Excel + формулу или через небольшой Python-скрипт. Если нужно один раз быстро — бери Excel. Если таких файлов будет много — тогда Python.

      Логика такая:

      в столбце A у тебя вопрос + 3 варианта;
      в столбце B номер правильного ответа;
      на выходе формируется текст, где перед правильным вариантом стоит +, перед остальными -.


      Если делать в Excel:

      Нужно, чтобы вопрос и ответы были либо уже разбиты по строкам, либо их можно было разделить. Дальше собираешь итоговый текст формулой/макросом.

      Если структура всегда одинаковая:
      Code

      Вопрос
      1. Вариант 1
      2. Вариант 2
      3. Вариант 3
      то проще через VBA макрос. Пример:

      Code

      Sub ExportQuestionsToTXT()

      Dim ws As Worksheet
      Dim lastRow As Long
      Dim i As Long
      Dim txt As String
      Dim parts() As String
      Dim q As String
      Dim a1 As String, a2 As String, a3 As String
      Dim correct As Integer

      Set ws = ActiveSheet
      lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

      For i = 1 To lastRow
      parts = Split(ws.Cells(i, 1).Value, vbLf)

      If UBound(parts) >= 3 Then
      q = parts(0)
      a1 = Replace(parts(1), "1. ", "")
      a2 = Replace(parts(2), "2. ", "")
      a3 = Replace(parts(3), "3. ", "")
      correct = ws.Cells(i, 2).Value

      txt = txt & "? " & q & " _____" & vbCrLf & vbCrLf

      txt = txt & IIf(correct = 1, "+ ", "- ") & a1 & vbCrLf
      txt = txt & IIf(correct = 2, "+ ", "- ") & a2 & vbCrLf
      txt = txt & IIf(correct = 3, "+ ", "- ") & a3 & vbCrLf & vbCrLf
      End If
      Next i

      Open ThisWorkbook.Path & "\result.txt" For Output As #1
      Print #1, txt
      Close #1

      MsgBox "Готово! Файл result.txt создан."

      End Sub
      Как запустить:

      открываешь Excel;
      нажимаешь Alt + F11;
      Insert → Module;
      вставляешь код;
      F5;
      рядом с Excel-файлом появится result.txt.


      Если Excel ячейка содержит переносы строк внутри одного блока — этот способ отлично подойдет.

      Если хочешь через Python, это еще надежнее:

      Code

      import pandas as pd

      df = pd.read_excel("questions.xlsx", header=None)

      result = []

      for _, row in df.iterrows():
      block = str(row[0]).splitlines()
      correct = int(row[1])

      q = block[0].strip()
      answers = [line[3:].strip() for line in block[1:4]]

      result.append(f"? {q} _____\n")

      for i, ans in enumerate(answers, start=1):
      prefix = "+" if i == correct else "-"
      result.append(f"{prefix} {ans}")

      result.append("")

      with open("result.txt", "w", encoding="utf-8") as f:
      f.write("\n".join(result))
      Что нужно для Python:

      установить Python;
      поставить библиотеку
      Code
      pandas
      и
      Code
      openpyxl
      ;
      запустить скрипт рядом с Excel-файлом.


      Команды установки:
      Code

      pip install pandas openpyxl
      По итогу:

      без программирования, быстро — VBA в Excel;
      гибко и надежно — Python;
      вручную — вообще не вариант для 400 вопросов.


      Если хочешь, я могу тебе прямо готовый скрипт под твою точную структуру таблицы сделать, чтобы ты просто вставил и получил TXT без доработок.
Loading...