在python中,如何在换行之前从行尾移除额外的空间?
我对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
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这样做是为了在行中的每个字符之间获得一个空间,这仍然是需要的。在我的输入文件中可能已经有空间,我不想在字符之间添加额外的空间。“这就是为什么我还有别的办法,”琼哈珀说,“我把它修好了。