如何在python中的换行符之前从行尾删除额外的空格?

时间:2017-10-07 21:19:14

标签: python file

我对python很新。我有一个程序,它读取具有不同字符的输入文件,然后将该文件中的所有唯一字符写入输出文件,每个字符之间有一个空格。问题是在最后一个字符之后有一个额外的空格(在换行符之前)。我该如何删除它?

我的代码:

INSERT INTO BPF_REMOTE.farms.CCData(datafk, datahistorypk, date, displayText)
    SELECT [datafk], [datahistorypk], [date], [displayText]
    FROM [FCentral].[dbo].[DataHistory]
    WHERE [sampleNr] = (SELECT MAX (sampleNr) FROM [FCentral].[dbo].[DataHistory]);

2 个答案:

答案 0 :(得分:4)

使用行outfile.write(' '),在每个字符后面写一个空格(除非字符是空格)。所以你必须避免写最后一个空格。现在,在你完成阅读之前,你无法判断任何给定的角色是否是最后一个,所以你不能只用一个if语句来测试它,但有几种方法可以获得围绕着:

  • 在字符c之前写下空格而不是之后。这样,您必须跳过的空间是第一个字符之前的空间,并且您肯定可以使用if语句和布尔变量进行标识。如果您这样做,请确保在第一个或第二个c本身就是空格时检查您是否获得了正确的结果。
  • 或者,你可以避免写任何东西,直到最后。只需保存您看到的所有字符 - 您已经在列表result中执行此操作 - 并将它们全部写在一起。你可以使用

    ' '.join(strings)
    

    将一个字符串列表(在本例中为您的字符)连接在一起,它们之间有空格,这将自动省略尾随空格。

答案 1 :(得分:-1)

为什么要添加if if end? 你的程序在最后增加了额外的空间。

import sys
inputName = sys.argv[1]
outputName = sys.argv[2]

infile = open(inputName,"r",encoding="utf-8")
outfile = open(outputName,"w",encoding="utf-8")
result = []
for line in infile:
   charno = 0
   for c in line:
       if c not in result:
           result.append(c)
           outfile.write(c.strip())

          charno += 1
          if (c == ' '):
              pass
          elif charno => len(line):
              pass
          else:
              outfile.write(' ')

outfile.write('\n')