2013-06-26 47 views
0

我打算在几个循环中打印出一行行,我想找到一种打印行的方式,而不使用\n,因为每次循环完成后都会添加一个空行。代码中,我有一个示例如下:在Python中扮演奇怪的行迹

def compose_line6(self, pointers, pointers_synset_type):  
    self.line6 = '' 
    for A, B in zip(pointers, pointers_synset_type): 
     self.line6 += 'http://www.example.org/lexicon#'+A+' http://www.monnetproject.eu/lemon#pos '+B+'\n' 
    return self.line6 

def compose_line7(self, pointers, pointer_source_target): 
    self.line7 = '' 
    for A, B in zip(pointers, pointer_source_target): 
     self.line7 += 'http://www.example.org/lexicon#'+A+' http://www.monnetproject.eu/lemon#source_target '+B+'\n' 
    return self.line7 

def compose_contents(self, line1, line2, line3, line4, line5, line6, line7): 
    self.contents = '''\ 
    '''+line1+''' 
    '''+line2+''' 
    '''+line3+''' 
    '''+line4+''' 
    '''+line5+''' 
    '''+line6+''' 
    '''+line7+'''''' 
    return self.contents 

def print_lines(self, contents): 
    print (contents) 

当我打印这些事是这样的:

 http://www.example.org/lexicon#13796604 http://www.monnetproject.eu/lemon#pos n 
http://www.example.org/lexicon#00603894 http://www.monnetproject.eu/lemon#pos a 
http://www.example.org/lexicon#00753137 http://www.monnetproject.eu/lemon#pos v 
http://www.example.org/lexicon#01527311 http://www.monnetproject.eu/lemon#pos v 
http://www.example.org/lexicon#02361703 http://www.monnetproject.eu/lemon#pos v 

     http://www.example.org/lexicon#13796604 http://www.monnetproject.eu/lemon#source_target 0000 
http://www.example.org/lexicon#00603894 http://www.monnetproject.eu/lemon#source_target 0401 
http://www.example.org/lexicon#00753137 http://www.monnetproject.eu/lemon#source_target 0302 
http://www.example.org/lexicon#01527311 http://www.monnetproject.eu/lemon#source_target 0203 
http://www.example.org/lexicon#02361703 http://www.monnetproject.eu/lemon#source_target 0101 

,我想这样的:

http://www.example.org/lexicon#13796604 http://www.monnetproject.eu/lemon#pos n 
http://www.example.org/lexicon#00603894 http://www.monnetproject.eu/lemon#pos a 
http://www.example.org/lexicon#00753137 http://www.monnetproject.eu/lemon#pos v 
http://www.example.org/lexicon#01527311 http://www.monnetproject.eu/lemon#pos v 
http://www.example.org/lexicon#02361703 http://www.monnetproject.eu/lemon#pos v  
http://www.example.org/lexicon#13796604 http://www.monnetproject.eu/lemon#source_target 0000 
http://www.example.org/lexicon#00603894 http://www.monnetproject.eu/lemon#source_target 0401 
http://www.example.org/lexicon#00753137 http://www.monnetproject.eu/lemon#source_target 0302 
http://www.example.org/lexicon#01527311 http://www.monnetproject.eu/lemon#source_target 0203 
http://www.example.org/lexicon#02361703 http://www.monnetproject.eu/lemon#source_target 0101 

帮助将非常感谢

回答

2

您需要关闭报价添加换行符之前:

'''\ 
    '''+line1+''' 
    '''+line2+''' 
    '''+line3+''' 
    '''+line4+''' 
    '''+line5+''' 
    '''+line6+''' 
    '''+line7+'''''' 

你逃过了第一个换行符,但它仍然是加4位背后line1。在结束

print contents, 

注意逗号:试试这个:

print("\n".join([line1, line2, line3, line4, line5, line 6, line7]))

+0

我仍然得到每个方法之间的换行符?有没有办法解决这个问题? – Johnnerz

+0

这是因为你正在'compose_line'函数中添加换行符。或者使用'“”.join(...)'或者(最好)只删除在你自己的函数中生成的换行符。 – dav

+0

你能解释一下吗?我有'self.line7 ='''被移除,但它仍然留下空间 – Johnnerz

1

在Python 2.x它将是print "Text", - 没有逗号后。

在Python 3.x中它将是print("Text", end="") - 只是print()函数的特殊参数。

+0

如果你从__future__导入print_function',那么你可以在2.x中使用3.x格式,以防版本兼容性很重要。 – Marcin

2

使用:

def compose_contents(self, line1, line2, line3, line4, line5, line6, line7): 
    self.contents = '\n'.join([line1, line2, line3, line4, line5, line6, line7]) 
    return self.contents 

和!