2017-11-23 1 views
0

문서 제목 목록에서 DITA keydef 목록을 신속하게 만들려고합니다. 제목이 "장치 사용 설명서"의 경우 는,이 같은 keydef을 만들려면 :줄에서/n을 제거하고 동시에 파이썬에서 해당 줄을 바꾸십시오.

<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)) 
관련 문제