如何在与python中的字符串相同的行上打印刻度/对勾字符

问题描述 投票:0回答:1

所以我有一个要从文件中读取的字符串。如果我的程序满足特定条件,我想在其旁边打印一个勾号。刻度线如果打印在字符串的下一行。这是负责打印字符串的函数。

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

关于解决此问题的任何想法,将不胜感激。谢谢

python string-formatting
1个回答
1
投票

您的问题似乎在此功能中。 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')

希望您的功能现在可以按预期运行:)

© www.soinside.com 2019 - 2024. All rights reserved.