使用Python str.splitlines()处理尾部换行符

使用Python str.splitlines()处理尾部换行符,python,string,python-3.x,Python,String,Python 3.x,我在图像上实现文本绘制,并试图通过实现适当前进的“文本光标”来处理换行 我有一个处理尾随新行的解决方案,但它既丑陋又不符合Python。什么是蟒蛇式的方式 下面是我现在正在做的事情(例如简化代码): 我在string.splitline()返回的每一行之后都做一个换行,如果原始字符串没有以换行符结尾,则撤消换行符 这很管用,但很难看。正确的方法是什么?您可以告诉拆分行在拆分时保留行尾(通过将True作为可选参数传递) 然后,在每一行上,如果没有换行符,则不要转到下一行(显示时必须去除line)

我在图像上实现文本绘制,并试图通过实现适当前进的“文本光标”来处理换行

我有一个处理尾随新行的解决方案,但它既丑陋又不符合Python。什么是蟒蛇式的方式

下面是我现在正在做的事情(例如简化代码):

我在string.splitline()返回的每一行之后都做一个换行,如果原始字符串没有以换行符结尾,则撤消换行符


这很管用,但很难看。正确的方法是什么?

您可以告诉
拆分行
在拆分时保留行尾(通过将
True
作为可选参数传递)

然后,在每一行上,如果没有换行符,则不要转到下一行(显示时必须去除
line

对于字符串中的行。拆分行(True):

这避免了最后的测试,但引入了很多额外的测试和复杂性,只是为了处理最后一个案例。我认为坚持你的解决方案没有问题(这很难看,但很快-最好请求原谅而不是允许)

一项反对意见,而不是:

if string[-1] != '\n':  # if string is empty: Index out of range exception
我会:

if string and not string.endswith("\n"):

如果字符串为空,您的测试将使程序崩溃。此外,没有什么可纠正的,因此请先测试空字符串。

@Jean-Françoisfare谢谢;修复。(这是简化问题代码的产物。)简化时经常发生:)最好的方法是创建一个符合您描述的(通过测试)的非常有用。(我真正的代码尝试…execpt indexer捕捉空字符串。我认为这会分散我对问题的注意力,所以将其忽略。)
if string[-1] != '\n':  # if string is empty: Index out of range exception
if string and not string.endswith("\n"):