“ \r “导致print打印被覆盖

简介: “ \r “导致print打印被覆盖

写在最前面

读取文档中的文本进行处理,在这部分被坑死了

一段字符串文本,中间有/r进行换行,但文本就是打印不出来

调试到最后,通过替换" \r "发现了问题

print(text.replace("\r",'\n'))

关键" \r "之前python课还学过,真真无语

只能说,如果基础更牢一些,会少一些麻烦事吧~

参考:https://blog.csdn.net/m0_51183870/article/details/111477557

https://www.cnblogs.com/zzliu/p/10156658.html

1." \r " 回车符

将光标移到本行开头

\r 这一转义字符的来处:之前的打印机的指令

\b表示将光标的位置回退一位

print("01234\r56789")
print("\n")

这个代码只有一行,暂无法对其进行调试,以查看运行过程

但可以根据定义,对这代码进行人肉编译,我们可以猜测:

1.首先运行 \r 前的代码:向控制台输出01234。

2.其次运行到 \r 这一转义字符:光标移至本行开头,故此时光标位于0之前。

3.继续运行剩下代码:从光标处开始向控制台输出56789。

综上猜测:可以认为之前输出的01234是被56789覆盖了的!

继续编写代码验证猜测:

print("01234\r56789");
print("0123456789\ra");
print("0123456789\rab");
print("0123456789\rabc");

一些有趣的小功能

倒计时

# 显示倒计时
import time
for i in range(10):
    print("\r离程序退出还剩%s秒" % (9-i), end="")
    time.sleep(1)

(第一次做gif,留黑边了,有知道怎么去除的嘛)

加载中(转圈)

import time
lst = ["\\", "|", "/", "———"]
for i in range(20):
    j = i % 4
    print("\r" + lst[j], end="")
    time.sleep(0.2)

进度条

# 进度条功能
import time
for i in range(10):
    print("\r" + "■"*i, sep="", end="")
    time.sleep(0.2)
print("\n下载完成")

删除功能

import time
s = "是Yu誒222"
l = len(s)
for i in range(l):
    print("\r" + s[:l-1-i] + "|", end="")
    time.sleep(0.5)

强行不换行

在python里print会默认进行换行,可以通过修改参数让其不换行

(1) python2中可以在print语句的末尾加上逗号

print "hello",
print "world"

执行结果

hello world

(2)在python3里print是一个独立函数,可以通过修改它的默认值来让其不换行

def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
    """

将end参数改为其他的字符可以让print不换行:

print("Dream", "it", "possible", sep="-",end="/")
print("Big big world")

运行结果如下:

Dream-it-possible/Big big world

2." \v " 垂直制表符

将光标移到下一个垂直制表符对齐处位置。

print("01234\v56789\v");
print("\v =%d\n", '\v');
print("01234567\vab");
print("0123456789\vabc");

3." \f " 换页符

将光标移到下一页开头。

目录
相关文章
|
3月前
|
物联网 Linux 流计算
EasyLogger--不一样的打印输出
EasyLogger--不一样的打印输出
|
6月前
下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。
下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。
打印
4.6 打印 4.6.1 分页符的插入及删除 1、插入水平分页符 选定要插入分页符位置的下一行,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令 2、插入垂直分页符 选定要插入分页符位置的右侧列,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令。 3、同时插入水平、垂直分页符 选定某单元格,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择“插入分页符”命令此时会在该单元格左边框和上边框位置同时插入水平、垂直分页符。 4、删除手动分页符 先选择紧邻水平分页符的下面行 (或该行
|
11月前
|
Python
一日一技:print函数也能写文件
一日一技:print函数也能写文件
97 0
print 方法输出
print 方法输出
106 0
print 方法输出
|
Python
笨办法学 Python--跟书练习九~打印 打印 打印
笨办法学 Python--跟书练习九~打印 打印 打印
笨办法学 Python--跟书练习九~打印 打印 打印
打印列表去除[](简易循环方法)
想要print(list)结果不是这样:[1,2,3] 预期结果:共有3个数字满足,分别是:1 2 3
61 0
|
缓存 Java Go
自带的 print 函数居然会报错?(下)
最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志。