请考虑下面的Python 3.x的代码:Python:为什么在使用write()时输出中会出现多余的空行?
class FancyWriter:
def write(self, string):
print('<'+string+'>')
return len(string)+2
def testFancyWriter():
fw = FancyWriter()
print("Hello World!", file=fw)
print("How many new lines do you see here?", file=fw)
print("And here?", file=fw)
return
testFancyWriter()
输出类似于如下:
<Hello World!>
<
>
<How many new lines do you see here?>
<
>
<And here?>
<
>
为什么在这些之间的空行?
OK - 创建类似FancyWriter类的真正意图实际上是为Excel创建一个作家类: 我需要将选项卡式文本行写入Excel单元格,Excel行中的每行以及每个制表符将子字符串分隔到该行的单元格中。 奇怪的是,在那个ExcelWriter类(它也有一个像上面这样的write()函数,只是print()的调用被设置单元格值所取代),就会出现类似的现象 - 上面的FancyWriter类的输出! (我有靶细胞移动的下一行,如果输入字符串的最后一个字符是一个“\ n”)。
会有人能解释一下吗? 之间的界限究竟是什么?
什么将是一个FancyWriter“最Python的方式”(输出?文件?)类与写功能,以获得所需的输出状
<Hello World!>
<How many new lines do you see here?>
<And here?>
非常感谢提前!
'end ='''不起作用,因为'print'总是用空字符串调用写入器。 –
@DaveJ:是的,我刚刚发现我自己。 :-)既没有None,也没有None,所以看起来我们在写作者方面必须要特殊处理(或者完全避免使用“print”)。 – DSM
最好只处理'len(string)== 0'-大小写(或'string == DONTPRINT':P)不打印任何东西。 –