在Python中从行中剥离/n并同时替换该行

2024-09-30 02:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从文档标题列表快速创建一个DITA keydef列表。 如果标题是“设备用户指南”,我想创建如下keydef:

<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文件中提取的,其中每个标题都是新行。这会导致密钥(Device\u User\u Guide)结尾包含一个\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>

我设法用下划线替换空格,并使用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()))

Tags: txt标题maptopicdevicekeyskeywordclass
1条回答
网友
1楼 · 发布于 2024-09-30 02:26:34

我想出来了。只需将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))

相关问题 更多 >

    热门问题