字符串中有\n与\r时进行replace替换\n时出现的问题
- 出现问题的情况(有些人不太理解)
str1 = """
\r aaaaaaaaaaaa
\rbbbbbb\n今天天气好差
"""
print(str1.replace('\n', ''))
输出:
bbbbbb今天天气好差
为什么跟想象中的不太一样呢?
-
问题分析(理解\r 与\n的区别)
回车和换行的历史:
机械打字机有回车和换行两个键作用分别是:
换行就是把滚筒卷一格,不改变水平位置。 (即移到下一行,但不是行首,而是和上一行水平位置一样)
回车就是把水平位置复位,不卷动滚筒。 (即将光标移到行首,但是不会移到下一行,如果继续输入的话会覆盖掉前面的内容)
Enter = 回车+换行(\r\n) -
理解:
\n是换行,英文是New line
\r是回车,英文是Carriage return
unix换行:\n(0x0A)
MAC回车:\r(0x0D)
WIN回车换行:\r\n(0x0D,0x0A) -
代码演示
# 展示一:
print('\r这句话不会显示出来\rhahahhaha')
# 分析:
# 第一个\r是回车的意思但是并没有换行所以会回到起点
# 第二个\r同样的道理因为没有换行会回到最开始的位置所以中间部分会被清除掉
输出:
hahahhaha
# 展示二:
print('\r这句话会显示出来\r\nhahahhaha')
# 分析:
# 因为在第二个\r后有\n所以会产生换行
输出:
这句话会显示出来
hahahhaha
- 有的同学问了:print(’\rasdasda\r’),为什么这样就可以输出呢?请看下面解析