【问题标题】:how to replace CRLF in python? [duplicate]如何在python中替换CRLF? [复制]
【发布时间】:2020-11-26 12:33:34
【问题描述】:
>>> print 'aaa\rbbb'.replace('\r','ccc')
aaacccbbb
>>> print 'aaa\rbbb'.replace('\\r','ccc')
bbb
>>> print 'aaa\rbbb'.replace(r'\r','ccc')
bbb
>>> 

我想知道最后两个声明的原因。我很困惑什么

【问题讨论】:

  • 如果您只是学习基础知识,您可能应该专注于当前推荐和支持的语言版本,即 Python 3。Python 2 已于 2020 年初终止,但原定于 2018 年去世。
  • @tripleee 由于不兼容,我认为它们是两种语言。我刚刚在解决问题时遇到了这个问题。我在 python3 中测试了相同的结果。我不想与语言版本斗争。lol
  • 最后两个版本不替换 \r 因此它将光标移动到行首并且 bbb 替换 aaa 。没有replace()print 'aaa\rbbb' 会得到相同的结果。 '\\r'r'\r' 不是特殊字符 \r 而是带有两个字符的普通字符串 \ r

标签: python


【解决方案1】:

最后两个变体不替换换行符,所以它打印出原始的'aaa\rbbb'。它首先打印aaa,然后是行返回字符,将光标移回行首,然后在现有的aaa 上打印bbb

'\\r'r'\r' 不替换 '\r' 的原因是因为 '\r' 是行返回字符,但 '\\r'r'\r' 都是反斜杠后跟字母“r”。

【讨论】:

  • print 'aaaa\rbbb' show 'bbba',你是对的。谢谢!
【解决方案2】:

这是因为'\\r' 字面意思是字符'\' 后跟字符'r'

r'\r' 也一样。 r 前缀用于原始字符串。

两者都不会匹配字符\r(因为它是单个字符)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多