在python中,如何在与字符串相同的行上打印勾号/复选标记字符

2024-06-10 11:56:47 发布

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

所以我有一个字符串,我正在从一个文件中读取它。如果我的程序中满足某个条件,我想在它旁边打印一个勾号。如果在字符串的下一行上打印,则有多少次打勾。下面是负责打印字符串的函数

def printData(self):
        spaces = " " * self.getLevel() * 4 + "|__"  if self.getLevel() != 0 else ""
        if self.completed:
            print(spaces + self.data + u'\u2713')

        else:
            print(spaces + self.data)

        for child in self.children:
            print(child.printData())
        return ""

在上面的代码中,self.data实际上是要打印的字符串。我知道为什么会发生这种情况,但不知道如何解决。当我打印出包含字符串的列表时,它在每个字符串的末尾都附加了新行字符,这可能会迫使记号移到下一行。下面是我如何读取文件中的数据

def getCompData(self):
        with open("subdata.txt", "r") as f:
            lines = f.readlines()
            for line in lines:
                if line[0] == "c":
                    self.compTopics.append(line[1:])

        return self.compTopics

我试着使用end=""如下,但它也不起作用

if self.completed:
    print(spaces + self.data, end="")
    print(u'\u2713')

如果您有任何关于如何解决此问题的想法,我们将不胜感激。谢谢


Tags: 文件字符串selffordataifdefline
1条回答
网友
1楼 · 发布于 2024-06-10 11:56:47

您的问题似乎就在这个函数中。readlines()函数在末尾保留\n字符。要解决该问题,请使用line.rstrip('\n')。这应该是您修改过的函数:

def getCompData(self):
        with open("subdata.txt", "r") as f:
            lines = f.readlines()
            for line in lines:
                if line[0] == "c":
                    self.compTopics.append(line.rstrip('\n')[1:])

        return self.compTopics

这一部分现在按预期工作:

if self.completed:
    print(spaces + self.data, end="")
    print(u'\u2713')

希望您的函数现在能按预期工作:)

相关问题 更多 >