【问题标题】:How is a '\b' character stored in a string in python"?'\b' 字符如何存储在 python 中的字符串中?
【发布时间】:2017-02-15 15:48:11
【问题描述】:

如果我有一个字符串

dummy_path = "this is a dummy path\basic"

\b 字符当然是退格,所以它被打印(并由文件系统调用处理)为

这是个伪命题

Patasic,好名字!)

我是否有机会检测到这种情况并警告用户(我自己)dummy_path 中的 \ 应该被转义或替换为 /

【问题讨论】:

  • 试试print(repr(dummy_path))
  • Editor/IDE 语法高亮通常会以非常明显的方式标记这些类型的转义序列。你在使用语法高亮吗?是否可以对其进行配置以使这些结构更引人注目?
  • 这并不能完全回答您的问题,但请考虑使用 raw string 作为文件路径。 r"dummy\basic" 会将反斜杠解释为只是一个反斜杠。

标签: python string python-2.7


【解决方案1】:

你可以自己看看:

>>> dummy_path = "this is a dummy path\basic"
>>> dummy_path
'this is a dummy path\x08asic'

len 函数也反映了这一点:

>>> len("a\bc")
3
>>> "a\bc"
'a\x08c'
>>> print("a\bc")
c

in 运算符也是如此,使用两个字符串作为参数:

>>> "\b" in "a\bc"
True

如何显示完全取决于您的输出设备。大多数终端将一个接一个地打印每个字符。 \b 不是可见的,而是简单地将光标重新定位到左侧一个位置,此时a 会覆盖之前写入的h

值得注意的是,这是手册页显示粗体文本的方式。手册页(*roff 代码的屏幕渲染)使用字母-退格-字母序列来指示字母应以粗体显示。这个比喻来自打字机:要输入一个粗体字母,你输入一次,退格,然后在第一个字母上再次输入。同样,下划线可以表示为字母-退格-下划线。

【讨论】:

  • 使用repr(这是我的示例,在交互式外壳中显示值,隐式演示)。 dummy_path 是一个字符串值,而repr(dummy_path) 返回一个表示字符串值的字符串,特别是用\x?? 表示替换其他不可打印的字符。
  • 感谢您的回答,只是缺少关于如何以编程方式检测情况的一小部分,我想这只是if "\b" in dummy_path:
  • 没错。 in 操作符,当两个参数都是字符串时,行为有点不同;如果第一个参数是第二个的 substring,而不是第一个参数是第二个的 element,则返回 True。
猜你喜欢
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 2012-03-31
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多