在python中,如何在换行之前从行尾移除额外的空间?

在python中,如何在换行之前从行尾移除额外的空间?,python,file,Python,File,我对python还是个新手。我有一个程序,它读取具有不同字符的输入文件,然后将该文件中的所有唯一字符写入一个输出文件,每个字符之间只有一个空格。问题是在最后一个字符之后有一个额外的空格(在换行之前)。我怎样才能删除它 我的代码: import sys inputName = sys.argv[1] outputName = sys.argv[2] infile = open(inputName,"r",encoding="utf-8") outfile = open(outputName,"w

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

我的代码:

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:

   for c in line:
       if c not in result:
           result.append(c)
           outfile.write(c.strip())

          if(c == ' '):
             pass
          else:
             outfile.write(' ')

outfile.write('\n')

为什么要在末尾添加if块? 您的程序正在末尾添加额外的空间

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')

使用行
outfile.write(“”)
,在每个字符后面写一个空格(除非该字符是空格)。所以你必须避免写最后一个空格。现在,在完成阅读之前,您无法判断任何给定的字符是否是最后一个字符,因此,您不可能只输入
if
语句来测试这一点,但有几种方法可以绕过这一点:

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

    ' '.join(strings)
    
    将字符串列表(在本例中为您的字符)与它们之间的空格连接在一起,这将自动忽略尾随空格


此行的额外空间
输出文件。写入(“”)
?是的,该行用于用单个空格分隔每个字符。它还在最后添加了它,我想删除额外的空间。我想Jon这样做是为了在行中的每个字符之间获得一个空间,这仍然是需要的。在我的输入文件中可能已经有空间,我不想在字符之间添加额外的空间。“这就是为什么我还有别的办法,”琼哈珀说,“我把它修好了。