如何检测字符串中的转义序列
有一个字符串叫做 line,它的原始内容是这样的:
\rRAWSTRING
我想知道怎么检测里面有没有转义字符 \r?我试过的方法是:
if repr(line).startswith('\r'):
blah...
但是没有成功。我还试过用 find,比如:
if repr(line).find('\r') != -1:
blah
也不行。我到底漏掉了什么呢?
谢谢!
补充:
感谢大家的回复和对术语的纠正,抱歉让大家困惑了。
好吧,如果我这样做:
print repr(line)
那么输出的结果是:
'\rSET ENABLE ACK\n'
(包括单引号)。我试过所有的建议,包括:
line.startswith(r'\r')
line.startswith('\\r')
每个方法都返回 False。我还试过:
line.find(r'\r')
line.find('\\r')
每个方法都返回 -1。
6 个回答
1
你可以试试以下两种方法:
if repr(line).startswith(r'\r'):
或者
if line.startswith('\r'):
后面那种方法更好:看起来你使用 repr
只是为了获取转义字符。
2
兄弟,看起来你试过了所有的方法,但最简单的办法你却没用,就是 lines.startswith('\r')
:
>>> line = '\rSET ENABLE ACK\n'
>>> line.startswith('\r')
True
>>> '\rSET ENABLE ACK\n'.startswith('\r')
True
现在,先别用 repr()、\r 和 r'string' 这些复杂的东西,直接用最简单的方法,避免搞混。
4
如果:
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