Q&A
実現したいこと
xmlから取得した文章をWordファイル上で問題文形式にする。
ここに質問の内容を詳しく書いてください。
現在xmlから取得した文章をPythonを利用して、wordファイル上で問題文形式にしようとしています。問題用紙作成ツールを作成しています。
Pyton-docxのライブラリである、replace文を用いて、文章を変更ができますが、それを一つ一つの文章に直したら、きりがありません。
更に、他の問題形式では、また修正する必要があります。
xml.etree.ElementTreeとPython-docxを利用して、wordファイル上に書き込むことができました。一番上の図を真ん中の図のような形に直したいです。
該当のソースコード
Pythonの文章
import defusedxml.ElementTree as ET
import docx
docw = docx.Document()
tree = ET.parse('res00001.dat')
for mat_formattedtext in tree.iter('mat_formattedtext'):
if mat_formattedtext.text==None:
pass
else:
print(mat_formattedtext.text) docw.add_paragraph(mat_formattedtext.text)
for i in range(19):
para2=docw.paragraphs[i]
t = para2.text
t = t.replace("<p>", " ")
t = t.replace("</p>", " ")
t = t.replace("<br>", " ")
para2.text = t
docw.save('pp3-word.docx')
xml形式
<mat_extension>
<mat_formattedtext type="HTML"><p>以下の選択肢の中から県庁所在地である都市を選べ</p></mat_formattedtext>
</mat_extension>
</material>
</flow>
</flow>
<flow class="RESPONSE_BLOCK">
<response_lid ident="response" rcardinality="Single" rtiming="No">
<render_choice shuffle="No" minnumber="0" maxnumber="0">
<flow_label class="Block">
<response_label ident="c34670ec81e44256b8afafe49d3558a7" shuffle="Yes" rarea="Ellipse" rrange="Exact">
<flow_mat class="FORMATTED_TEXT_BLOCK">
<material>
<mat_extension>
<mat_formattedtext type="HTML"><p>下野市</p></mat_formattedtext>
</mat_extension>
</material>
</flow_mat>
</response_label>
</flow_label>
<flow_label class="Block">
<response_label ident="becb10b95e664ade9733ff12fb8773de" shuffle="Yes" rarea="Ellipse" rrange="Exact">
<flow_mat class="FORMATTED_TEXT_BLOCK">
<material>
<mat_extension>
<mat_formattedtext type="HTML"><p>宇都宮市</p></mat_formattedtext>
</mat_extension>
</material>
</flow_mat>
</response_label>
</flow_label>
<flow_label class="Block">
<response_label ident="6fed8b45824e4b69885523523c1e9caa" shuffle="Yes" rarea="Ellipse" rrange="Exact">
<flow_mat class="FORMATTED_TEXT_BLOCK">
<material>
<mat_extension>
<mat_formattedtext type="HTML"><p>日光市</p></mat_formattedtext>
</mat_extension>
</material>
</flow_mat>
</response_label>
試したこと
replace文で文章を変更する。
以下の選択肢➛ 質問1 以下の選択肢
下野市➛A.下野市
ソースコード
import defusedxml.ElementTree as ET
import docx
docw = docx.Document()
tree = ET.parse('res00001.dat')
for mat_formattedtext in tree.iter('mat_formattedtext'):
if mat_formattedtext.text==None:
pass
else:
print(mat_formattedtext.text) docw.add_paragraph(mat_formattedtext.text)
for i in range(19):
para2=docw.paragraphs[i]
t = para2.text
t = t.replace("<p>", " ")
t = t.replace("</p>", " ")
t = t.replace("<br>", " ")
para2.text = t
docw.save('pp3-word.docx')
para3=docw.paragraphs[1]
s = para3.text
s = s.replace("以下の選択肢の中", "質問1 以下の選択肢 ")
para3.text = s
docw.save('pp3-word.docx')
para4=docw.paragraphs[2]
d = para4.text
d = d.replace("下野市", "A.下野市 ")
para4.text = d
docw.save('pp3-word.docx')
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。