Как преобразовать эти текстовые сегменты в CSV? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь сделать файл CSV из текстового файла с HTML-тегами с вопросами и ответами.К сожалению, я пробовал и не смог открыть его в LibreOffice или любом другом CSV-совместимом программном обеспечении.Я пытаюсь преобразовать что-то вроде этого:

<b>Question 1:</b> What is the capital of United States?
<b>Answer:</b> Washington, D.C.

<b>Question 2:</b> What is the capital of United States?
<b>Answer:</b> Washington, D.C.

<b>Question 3:</b> What is the capital of United States?
<b>Answer:</b> Washington, D.C.

и т. Д.

Результат должен быть таким:

Question SEPARATOR Answer

* SEPARATOR не можетбыть цветом или точкой с запятой, потому что вопрос может содержать наиболее важные символы (двоеточие, точка с запятой, точки)

Я хочу импортировать в Anki, и он поддерживает файлы CSV.

Я пробовал отделить Вопроси ответьте специальным символом, таким как #, и только вопросы анализируются в LibreOffice / OpenOffice, и текст вопроса никогда не может содержать разрыв строки.Если текст содержит разрыв строки, CSV испортится.

1 Ответ

0 голосов
/ 19 октября 2018

Вот небольшой скрипт на Python для преобразования ваших карт в формат CSV:

import re
import csv

questions = [[]]

with open("original.file", "rt") as f:
    for line in f:
        line = line.strip()
        if line:
            questions[-1].append(line)
        else:
            questions.append([])

# Now we've got the questions in a 2D list.
# Let's just make sure it loaded properly.
assert all(len(question) == 2 for question in questions)

# Let's write a CSV file now.
with open("output.csv", "wt", newline="") as f:
    writer = csv.writer(f)
    for q, a in questions:
        writer.writerow([
            re.fullmatch(r"<b>Question \d+:</b> (.*)", q).group(1),
            re.fullmatch(r"<b>Answer:</b> (.*)", a).group(1)
        ])

Теперь вы можете импортировать их с типом карты "Basic".Этот код отбрасывает номер вопроса;Надеюсь, это было не так важно.

...