【发布时间】:2018-05-16 20:42:11
【问题描述】:
我正在用 Python 编写一个文本游戏。我写了一个函数,它接受一个单词列表并改变它们的颜色,而将其余的保持白色。
def highGreen(text, words):
textWords = text.split(" ")
highlight = set(textWords).intersection(words)
for word in textWords:
if word in highlight:
print("\033[32m", end="")
print(word, end=" ")
else:
print("\033[0m", end="")
print(word, end=" ")
我的问题是我似乎无法将此功能与textwrap.wrap 或.fill 结合使用,因此当打印到控制台时,单词会在随机位置中断。
我试过了:
text = "This bed is super uncomfortable."
for line in textwrap.wrap(text, 80):
highGreen(line, ["bed"])
但它仍然在一行中打印所有内容。
着色是以一种奇怪的方式完成的,因为我没有尝试在 Windows 10 控制台/PyCharm 中进行任何其他操作。
【问题讨论】:
-
您总是以
end=" "结束您的打印。这永远不会创建新行,这就是为什么所有内容都显示在同一行上。 -
要解决此问题,您可以在某处添加额外的空打印语句以强制创建新行,或者修改您的
ends 之一以添加新行。 -
text的长度小于 80 个字符! -
@OMarMohamed 这只是一个示例文本,原文超过 400 个字符
-
好的。正如@ZiyadEdher 所说,您需要在每个
highGreen调用的末尾打印一个换行符。
标签: python python-3.x windows-10