2017-11-23 6 views
0

ドキュメントタイトルのリストからDITA keydefのリストをすばやく作成しようとしています。 タイトルは「デバイスユーザーガイド」であれば、私はこのようなkeydef作成したい:行から削除すると同時に、その行をPythonで置き換えます

<keydef keys="Device_User_Guide" class="+ map/topicref mapgroup-d/keydef "> 
    <topicmeta class="- map/topicmeta "> 
    <keywords class"- topic/keywords "> 
    <keyword class="- topic/keyword ">Device User Guide</keyword> 
    </keywords> 
    </topicmeta> 
</keydef> 

タイトルはそれらのそれぞれが新しいラインですtitles.txtファイルから抽出されているが。これには、私の出力がこれです、最後に\ nを含むように、キー(Device_User_Guide)を引き起こす:

<keydef keys="Device_User_Guide 
" class="+ map/topicref mapgroup-d/keydef "> 
     <topicmeta class="- map/topicmeta "> 
     <keywords class"- topic/keywords "> 
     <keyword class="- topic/keyword ">Device User Guide</keyword> 
     </keywords> 
     </topicmeta> 
    </keydef> 

私はしかし、アンダースコアとスペースを交換し、キーワードにrstrip使用するために管理私がストリップする方法私は置換操作をしていると同時に改行文字ですか?ここに私のコードです:

title = open('titles.txt', 'r') 
keydefs = open('keydefs.txt', 'w') 
for line in title: 
    keydefs.write('<keydef keys="%s" class="+ map/topicref mapgroup-d/keydef ">\n <topicmeta class="- map/topicmeta ">\n <keywords class"- topic/keywords ">\n <keyword class="- topic/keyword ">%s</keyword>\n </keywords>\n </topicmeta>\n</keydef>' % (line.replace(" ","_"), line.rstrip())) 

答えて

0

私はそれを考え出しました。 line.rstrip()をループの先頭に移動するだけです。

title = open('titles.txt', 'r') 
keydefs = open('keydefs.txt', 'w') 
for line in title: 
    newline = line.rstrip() 
    keydefs.write('<keydef keys="%s" class="+ map/topicref mapgroup-d/keydef ">\n <topicmeta class="- map/topicmeta ">\n <keywords class"- topic/keywords ">\n <keyword class="- topic/keyword ">%s</keyword>\n </keywords>\n </topicmeta>\n</keydef>' % (newline.replace(" ","_"), newline)) 
関連する問題