我对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]);
答案 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')