如何使我的文字没有额外的行

时间:2014-08-29 17:18:03

标签: python io

所以我有这个程序。基本上我得到7个坐标,然后我发回了1个坐标。 (无法解释)

from sys import stdin ,stdout

test=int(stdin.readline().strip("\n")) #It got stripped the new line

for z in range(test):
    c=stdin.readline().strip("\n").split(" ")# Here also!
    x=[0,0,0,0,0,0,0,0]
    y=[0,0,0,0,0,0,0,0]
    letter="abcdefgh"
    for k in range(7):
        x[letter.index(c[k][0])]=1
        y[int(c[k][1])-1]=1
    stdout.write(letter[x.index(0)]+str(y.index(0)+1)+"\n") #This is the main bits

这就是事情。

此程序响应被另一个程序捕获并写入文件中。当我使用stdout.write(+"\n")print时,我的程序会输出类似

的内容
h4

g2

h4
...

但是当我只使用普通stdout.write()

h4g2h4...

如何使我的程序输出如下:

h4
g2
h5
...

记录我的程序的程序使用:

result=open("txt.txt","w")
process=subprocess.Popen([sys.executable,"work.py"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
res=process.communicate(a)
result.write(res[0])

据我所知,print增加1行,而不是2行。那就是我迷路的地方。

我的输入确实有新的行,但它被剥离了,你可以在第2行看到。

1 个答案:

答案 0 :(得分:1)

因此,由于您正在写一个文件,我可以根据我对python的了解来回答这个问题。如果我错了,请纠正我,但这是我的回答:

stdout.writelines([letters[x.index(0)]+str(y.index(0)+1)])

由于你的x值发生了变化,因此无法正常工作。

您可以像这样使用.format:

stdout.write('{} \n'.format(letters[x.index(0)]+str(y.index(0)+1)))

但是,如果你无法做到这一点,那么你可能就是如何格式化stdout.write()......

科林