Python:为什么在使用write()时输出中会有额外的空行?

2024-10-02 18:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

请考虑以下Python 3.x代码:

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()

输出如下所示:

^{pr2}$

为什么这些空行在中间?在

好-创建FancyWriter类的真正目的是为Excel创建一个writer类: 我需要将带制表符的文本行写出到Excel单元格中,每行都在Excel行中,并且每个制表符分隔的子字符串都写入该行的单元格中。 奇怪的是,在那个ExcelWriter类中(它也有一个类似于上面的write()函数,只是对print()的调用被设置单元格值所代替),也出现了类似的现象——在上面的FancyWriter类的输出中有一些空白行! (如果传入字符串的最后一个字符是'\n',则目标单元格将移动到下面一行。)

有人能解释一下吗?从字面意义上讲,字里行间到底发生了什么?在

对于一个爱幻想的作家来说,什么才是“最棒的方式”(输出?文件?)使用write函数初始化以获得所需的输出,如下所示

<Hello World!>
<How many new lines do you see here?>
<And here?>

提前谢谢你!在


Tags: helloworldstringreturnheredefexcelmany
1条回答
网友
1楼 · 发布于 2024-10-02 18:20:07

你的“空行”实际上是用一个字符串'\n'调用的函数,用来处理行尾。例如,如果我们将打印更改为

print(repr(string))

并将hello world行改为

^{pr2}$

我们看到了

'Hello World!'
'zzz'
'How many new lines do you see here?'
'\n'
'And here?'
'\n'

基本上,print不会构建一个字符串,然后将end值添加到其中,它只是将end传递给编写器本身。在

如果你想避免这种情况,你必须避免print,我想,或者是一个特殊情况,你的编写器要处理接收某个参数的情况,因为看起来{}将传递{},即使它是空字符串。在

相关问题 更多 >