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

2024-10-01 04:45:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道一个字符串foo=='某个字符串'。这在大多数情况下都有效。但是,我意识到,有时foo可能包含转义序列,如'\n'或'\t',我想解释一下这一点。有什么快速的或者内置到python2.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 BOMs。但是,BOM序列总是相同的,所以很容易处理。我仍然使用.strip()来解释所有转义序列。你知道吗


Tags: 字符串in文本falseiffoobar情况
1条回答
网友
1楼 · 发布于 2024-10-01 04:45:49

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

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

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

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

上面的正则表达式去掉了所有control characters。你知道吗

相关问题 更多 >