有没有一种快速的方法来返回没有Python中的转义序列的字符串?

时间:2014-06-16 14:16:09

标签: python string escaping string-literals

我希望能够判断字符串foo =='some string'。这大部分时间都有效。然而,我意识到有时foo包含转义序列,例如'\ n'或'\ t',我想说明这一点。是否有任何快速或内置于Python 2.7的内容可以帮助我解决这个问题?或者我是否必须完全通过所有转义序列并确保它们都没有侵入我的字符串foo?

如果你仍然不确定,这是一个例子:

foo = '\tZebra'

所以当我打印foo时,它显示为

    Zebra

我不能轻易确定在针对字符串文字测试foo时没有转义序列,例如'\ t':

foo == 'Zebra'

返回False。

我想到的是使用这些行:

if 'Zebra' in foo:
    bar()

但这不仅仅是Python的转义序列。例如:

foo = 'ttZebra'
if 'Zebra' in foo:
    print 'bar'

这确实会打印'bar'。

那么,在使用它之前,如何从字符串中快速删除所有转义序列?另外,如果这有帮助,我知道我的所有字符串都不会包含空格,因为它们都来自.split()列表。


答案:

我尝试使用.strip(),这有帮助,但我的程序仍无效。事实证明我的所有文件都有UTF-8 BOM个。但是,BOM序列始终相同,因此很容易处理。我仍然使用.strip()来计算所有转义序列。

1 个答案:

答案 0 :(得分:1)

如果您要求从字符串的开头和结尾剥离任何序列,请使用strip()

>>> foo = '\tZebra'
>>> foo.strip()
>>> 'Zebra'

如果您希望它也在字符串的中间剥离,您可以执行以下操作

>>> import re
>>> re.sub('[\x00-\x1F\x7F]', '', '\tZebra\tZebra')
'ZebraZebra'

上面的正则表达式删除了所有control characters