1

好的,所以我已经阅读了很多建议如何消除额外空间的帖子,但无论出于何种原因,我似乎无法将这些建议应用于我的系统,所以我在这里寻求您的帮助。

这些是我的代码的最后几行:

    for line in rline[start+5 : end] :
        words = line.split()
        word1 = int(words[1])
        print >>opennew, "%s%s" % (word1,line[30:])

新的“opennew”文件如下所示:

    1        0.876153    0.152889   -0.047464

    2        1.011880   -1.161641   -2.096289

    3        0.883419    1.558736    1.966913

    4        2.010367   -1.140725    1.053368

虽然我真正想要的是:

    1        0.876153    0.152889   -0.047464
    2        1.011880   -1.161641   -2.096289
    3        0.883419    1.558736    1.966913
    4        2.010367   -1.140725    1.053368

无论如何,我是否在代码中添加了一些东西来从我的输入中删除额外的(不需要的)输入/空间?

非常感谢您的帮助。

PS:(请不要问我为什么要拆分代码中的行,这是有目的的,将来会有应用程序(更好的)代码)

4

4 回答 4

7

尝试剥离换行符line

line = line.rstrip("\n")
于 2012-11-14T07:38:40.690 回答
3

您可以使用从每行删除尾随空格line = line.rstrip()或更改print语句以省略其自己的尾随换行符:

print >>opennew, "%s%s" % (word1,line[30:]),
#                                          ^

但是,由于print语句的复杂语法,最好使用rstrip()...

于 2012-11-14T07:42:50.273 回答
0

正如@ThiefMaster 或@squiguy 建议的那样,但另一种方法是:

import sys
sys.stdout.write('%s%s' % (word1, line[30:]))

虽然我可能会去.rstrip

于 2012-11-14T07:44:54.047 回答
0

感谢大家的建议,根据 ThiefMaster 的回答,我发现我可以通过添加“-1”来消除行中的最后一个空格,而不是消除 Python 自己的换行符,这样问题就解决了

    print >>opennew, "%s%s" % (word1,line[30:-1])

我之前尝试过的另一种方法是

    opennew.write (str(word1) + (line[30:]) + "")

最后的附加引号是消除额外(不需要的)输入/空间的引号。它对我有用,但老实说我不知道​​为什么,你知道那些额外的引号是做什么的吗?

谢谢

于 2012-11-15T00:21:56.943 回答