2017-02-15 31 views
1

如果我有一个字符串如何是一个“ B”字存储在Python中的字符串“?

dummy_path = "this is a dummy path\basic" 

\b人物当然是一个退格,所以这得到印刷(通过文件系统调用处理)作为

这是一个虚拟patasic

Patasic,好听的名字!)

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

+2

尝试'print(repr(dummy_path))' –

+1

编辑器/ IDE语法突出显示通常会以非常明显的方式标记这些类型的转义序列。你在使用语法高亮吗?它可以配置为使这些结构对你更明显吗? –

+1

这并不完全回答你的问题,但考虑对文件路径使用[原始字符串](https://docs.python.org/2/reference/lexical_analysis.html#string-literals)。 'r“dummy \ basic”'会将反斜杠解释为反斜杠。 – Kevin

回答

3

您可以看到自己:

>>> 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代码)使用字母退格字母序列来表示字母应以粗体显示。这个比喻来自打字机:用粗体键入一个字母,键入一次,退格键,然后在第一个键入一个字母。同样,下划线可以表示为字母后退下划线。

+0

使用'repr'(这就是我的例子,在交互式shell中显示值,隐式演示)。 'dummy_path'是一个字符串值,而'repr(dummy_path)'返回一个*表示字符串值的字符串,具体来说,用另外的不可打印字符替换为'\ x ??'表示。 – chepner

+0

感谢您的回答,它只是缺少一小部分关于如何以编程方式检测情况,我认为它只是'如果'\ b“在dummy_path中:' – Antonio

+0

没错。当两个参数都是字符串时,in运算符的行为有点不同;如果第一个参数是第二个参数的* substring *,那么它返回True,而不是第一个参数是第二个参数的* element *。 – chepner

相关问题