python print无法打印\r的问题及解决

 更新时间:2023年08月10日 08:45:58   作者:痛快最重要  
这篇文章主要介绍了python print无法打印\r的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python print无法打印\r问题

最近在学习python的爬虫,今天爬取内容的时候发现了一个bug,让我迷惑了好一会,后面终于发现了问题所在。

在python中,当遇到'\r'回车符时,print的光标要重新置为这一行的开头而且不会换行,然后就会导致前面的内容被覆盖掉,导致打印的内容出现缺失。

解决办法

1.可以用字符串的替换把'\r'替换为空串""或者空格" "这样就可以正常打印了。

替换方法:

import re
#三个参数分别是要替换的正则表达式,要替换成的字符串,要替换的目标,下面的意思就是将temp这个字符串的回车符'\r'全部替换为""空串
print re.sub(r'\r',"" , temp)

2.可以在后面添加'\n'换行符,这样就会换行打印了,不会覆盖掉之前的内容。

import re
#三个参数分别是要替换的正则表达式,要替换成的字符串,要替换的目标,下面的意思就是将temp这个字符串的回车符'\r'全部替换为'\r\n'回车换行符
print re.sub(r'\r','\r\n' , temp)

注意:

这里的回车符只影响打印,要是你直接写入文件是不会出现问题的,另外要注意因为参数要用到和返回值都是字符串,可以先在之前把其他的处理完了再替换打印,不然可能格式变化会影响之后的处理。

python中\r的意义及用法

\r的意义

  • \r表示将光标的位置回退到本行的开头位置
  • \b表示将光标的位置回退一位

在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

Process finished with exit code 0

\r的应用

利用\r可以实现很多有趣的小功能

在命令行实现倒计时功能

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

运行结果如图

命令行实现转圈功能

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 = "枝上柳绵吹又少,天涯何处无芳草"
l = len(s)
for i in range(l):
    print("\r" + s[:l-1-i] + "|", end="")
    time.sleep(0.15)

运行效果如图

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python实现一个自助取数查询工具

    Python实现一个自助取数查询工具

    在数据生产应用部门,取数分析是一个很常见的需求,实际上业务人员需求时刻变化,最高效的方式是让业务部门自己来取,减少不必要的重复劳动,本文介绍如何用Python实现一个自助取数查询工具
    2021-06-06
  • Pyhton自动化测试持续集成和Jenkins

    Pyhton自动化测试持续集成和Jenkins

    这篇文章介绍了Pyhton自动化测试持续集成和Jenkins,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Python直接赋值及深浅拷贝原理详解

    Python直接赋值及深浅拷贝原理详解

    这篇文章主要介绍了Python直接赋值及深浅拷贝原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • python三元运算符实现方法

    python三元运算符实现方法

    这篇文章主要介绍了python实现三元运算符的方法,大家参考使用吧
    2013-12-12
  • python 高阶函数简单介绍

    python 高阶函数简单介绍

    这篇文章主要介绍了python 高阶函数的相关资料,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • 基于Python的XSS测试工具XSStrike使用方法

    基于Python的XSS测试工具XSStrike使用方法

    XSS(Cross Site Scripting,跨站脚本攻击)是一类特殊的Web客户端脚本注入攻击手段,通常指攻击者通过“HTML注入”篡改了网页,插入恶意的脚本,从而在用户浏览网页时控制浏览器的一种攻击。
    2017-07-07
  • python中ImageTk.PhotoImage()不显示图片却不报错问题解决

    python中ImageTk.PhotoImage()不显示图片却不报错问题解决

    这篇文章主要给大家介绍了关于在python中ImageTk.PhotoImage()不显示图片却不报错问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • python3处理含有中文的url方法

    python3处理含有中文的url方法

    今天小编就为大家分享一篇python3处理含有中文的url方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 用Python实现QQ游戏大家来找茬辅助工具

    用Python实现QQ游戏大家来找茬辅助工具

    这是一个用于QQ大家来找茬(美女找茬)的辅助外挂,开发的原因是看到老爸天天在玩这个游戏,分数是惨不忍睹的负4000多。本来是想写个很简单的东西,但由于过程中老爸的多次嘲讽,逼得我不得不尽力完善,最后形成了一个小小的产品。
    2014-09-09
  • Django路由Path方法的使用详解

    Django路由Path方法的使用详解

    这篇文章主要介绍了Django路由Path方法的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论