我正在尝试使用带有问题和答案的html标签从文本文件中制作CSV文件。 不幸的是,我已经尝试过并且无法在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会混乱。
答案 0 :(得分:0)
以下是一些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)
])
现在,您可以使用“基本”卡类型导入它们。此代码丢弃问题编号;我希望那不是太重要。