Python 如何使用回车符和换行符格式化文本?

Python 如何使用回车符和换行符格式化文本?,python,python-3.x,formatting,newline,carriage-return,Python,Python 3.x,Formatting,Newline,Carriage Return,我想展示这个系列以供实验 A B 不添加新行,就像只使用“A”一样。 这是一个代码,只有一个,它的工作 root@kali-linux:/tmp# cat a.py import time x = "A" while True: print(x, end = "\r") x += "A" time.sleep(1) 现在我加了B root@kali-linux:/tmp# cat a.py import

我想展示这个系列以供实验

A
B
不添加新行,就像只使用“A”一样。 这是一个代码,只有一个,它的工作

root@kali-linux:/tmp# cat a.py 
import time
x = "A"
while True:
    print(x, end = "\r")
    x += "A"
    time.sleep(1)
现在我加了B

root@kali-linux:/tmp# cat a.py 
import time
x = "A"
y = "B"
while True:
    print(x, end = "\r")
    print(y, end = "\r")
    x += "A"
    y += "B"
    time.sleep(1)
不幸的是,B吃了A,只有B增加。我尝试过这样的事情,但它会导致重复,这是我不想要的

import time
x = "A"
y = "B"
while True:
    print(x, end = "\r")
    print('\n', end='\r')
    print(y, end = "\r")
    x += "A"
    y += "B"
    time.sleep(1)
有没有办法不重复地打印这个系列?我得到了这个答案,但在python3中似乎很难实现

\r移回行的开头,它不会移到新行(为此您需要\n)。当您有“A”和“B”时,它会写入所有的“A”,然后用“B”覆盖它。
您需要遍历所有的“A”,然后打印新行\n,然后为“B”循环。
编辑 诅咒和色瘤的答案都是可以的,但诅咒会导致终端在尝试时死亡,这有点不可计算。但是colorama很容易。此外,答案应该稍加修改,因为不需要新行

os.sytem('clear')
colorama.init()之后执行此任务。colorama回答的主要部分是这个
打印(“\x1b[%d;%dH”%(1,1),end=”“)

此外,签出在此处也很有用

快速演示:

import time
import curses

win = curses.initscr()
for i in range(10):
    time.sleep(0.5)
    win.addstr(0, 0, "A" * i)
    win.addstr(1, 0, "B" * i)
    win.refresh()

curses.endwin()
curses.initscr()
创建一个覆盖整个终端的“窗口”

addstr(y,x,string)
将字符串添加到给定位置


您可以在文档中找到更多关于如何摆弄
诅咒
以使其完全符合您的要求的信息

至于使用\r和\n,我不确定我是否遇到过这样做的方法。我通常用于自定义CLI输出的是模块colorama。使用一些控制位,您可以将文本定位到任意位置你想在屏幕上,甚至在不同的颜色和风格

网站:

代码:


啊,就是这样!我记得几年前我使用了一个不同的模块,对于简单的程序来说,它比诅咒更容易,但就我的一生而言,我记不起它的名字了。根据你的编辑,我已经更新了答案。
import time
x = "A"
y = "B"
while True:
    print(x, end = "\r")
    print('\n', end='\r')
    print(y, end = "\r")
    x += "A"
    y += "B"
    time.sleep(1)
import time
import curses

win = curses.initscr()
for i in range(10):
    time.sleep(0.5)
    win.addstr(0, 0, "A" * i)
    win.addstr(1, 0, "B" * i)
    win.refresh()

curses.endwin()
# Imports
import time
import colorama
import os

# Colorama Initialization (required)
colorama.init()

x = "A"
y = "B"

# Clear the screen for text output to be displayed neatly
os.system('cls')  #  For Microsoft Terminal, may be 'clear' for Linux

while True:
    # Position the cursor back to the 1,1 coordinate
    print("\x1b[%d;%dH" % (1, 1), end="")
    # Continue printing
    print(x)
    print(y)
    x += "A"
    y += "B"
    time.sleep(1)