如何检测字符串中的转义序列

2024-06-01 19:57:53 发布

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

给定一个名为line的字符串,其原始版本具有此值:

\rRAWSTRING

如何检测它是否有转义字符?我试过的是:

if repr(line).startswith('\r'):
    blah...

但它没有抓住它。我也试过找,比如:

if repr(line).find('\r') != -1:
    blah

也不管用。我错过了什么?

thx!

编辑:

感谢您的回复和更正,并对您的困惑表示歉意。

好吧,如果我这么做

print repr(line)

那么它印的是:

'\rSET ENABLE ACK\n'

(包括单引号)。我尝试了所有的建议,包括:

line.startswith(r'\r')
line.startswith('\\r') 

每个都返回False。也尝试过:

line.find(r'\r')
line.find('\\r')

每个返回-1


Tags: 字符串版本编辑ifenablelinefindblah
3条回答

如果:

print repr(line)

返回:

'\rSET ENABLE ACK\n'

然后:

line.find('\r')
line.startswith('\r')
'\r' in line

是你要找的。示例:

>>> line = '\rSET ENABLE ACK\n'
>>> print repr(line)
'\rSET ENABLE ACK\n'
>>> line.find('\r')
0
>>> line.startswith('\r')
True
>>> '\r' in line
True

repr()返回一个显示字符串。它实际上包含打印行时看到的引号和反斜杠:

>>> print line
SET ENABLE ACK

>>> print repr(line)
'\rSET ENABLE ACK\n'
>>> print len(line)
16
>>> print len(repr(line))
20

伙计,看来你什么都试过了,除了最简单的事情,lines.startswith('\r')

>>> line = '\rSET ENABLE ACK\n'
>>> line.startswith('\r')
True
>>> '\rSET ENABLE ACK\n'.startswith('\r')
True

现在,只要坚持使用repr()、\r和r'string',并使用最简单的方法来避免混淆。

您可以尝试:

if repr(line).startswith(r'\r'):

或者

if line.startswith('\r'):

后者更好:似乎您只是使用repr来获取转义字符。

相关问题 更多 >