语言:python(版本:3.7.3)
熟练程度:新手

我想删除文件每一行中的所有前导和尾随空格。因此,我使用了内置方法“ strip()”,该方法几乎可以完成工作,但是我的代码从文件底部开始不活动,这导致文件中的行重复。任何帮助都将有助于实现这一目标。

我的代码如下:

class filecorrection:

    def removeLeadingandTrailingSpacesinaFile(self, fromFile):
        with open(fromFile, 'r+') as file:
            lines = file.readlines()
            for line in lines:
                file.write(line.strip() + "\n")

cm = filecorrection()
cm.removeLeadingandTrailingSpacesinaFile("filepath")


我试图使用seek方法将指针带到文件的开头,但没有得到完美的输出。

class filecorrection:

def removeLeadingandTrailingSpacesinaFile(self, fromFile):
    with open(fromFile, 'r+') as file:
        lines = file.readlines()
        **file.seek(0)**
        for line in lines:
            file.write(line.strip() + "\n")

cm = filecorrection()
cm.removeLeadingandTrailingSpacesinaFile("filepath")


预期:(删除尾随和前导空格)

<book id="bk105">
<author>Corets, Eva</author>
<title>The Sundered Grail</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>testing</publish_date>
</book>


实际:

  <book id="bk105">
      <author>Corets, Eva</author>
      <title>The Sundered Grail</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>testing</publish_date>
   </book><book id="bk105">
<author>Corets, Eva</author>
<title>The Sundered Grail</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>testing</publish_date>
</book>

最佳答案

您可以像这样打开两次文件

class filecorrection:

    def removeLeadingandTrailingSpacesinaFile(self, fromFile):
        lines = []

        with open(fromFile, 'r') as file:
            lines = file.readlines()

        with open(fromFile, "w") as file:
            for line in lines:
                file.write(line.strip() + "\n")

cm = filecorrection()
cm.removeLeadingandTrailingSpacesinaFile("test.xml")


而不是尝试同时读取和写入文件。以写入模式(w)打开文件会将文件截断为零长度,并从头开始写入。

07-28 02:45
查看更多