所以我有一个要从文件中读取的字符串。如果我的程序满足特定条件,我想在其旁边打印一个勾号。刻度线如果打印在字符串的下一行。这是负责打印字符串的函数。
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')
关于解决此问题的任何想法,将不胜感激。谢谢
您的问题似乎在此功能中。 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')
希望您的功能现在可以按预期运行:)