给定一个名为line的字符串,其原始版本具有以下值:
\rRAWSTRING
如何检测它是否具有转义字符\ r?我试过的是:
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
答案 0 :(得分: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
答案 1 :(得分:2)
老兄,你似乎已经尝试了除了最简单的事情之外的一切,lines.startswith('\r')
:
>>> line = '\rSET ENABLE ACK\n'
>>> line.startswith('\r')
True
>>> '\rSET ENABLE ACK\n'.startswith('\r')
True
现在,继续使用repr(),\ r和r'string'并使用最简单的方法来避免混淆。
答案 2 :(得分:1)
你可以尝试:
if repr(line).startswith(r'\r'):
或
if line.startswith('\r'):
后者更好:看起来你只是使用repr
来获取转义角色。
答案 3 :(得分:0)
你所要求的并不完全清楚。你说的是一个字符串,但也是一个“原始版本”,你的字符串包含“RAWSTRING”,这似乎意味着你在谈论原始字符串。
这些都不是完全相同的。
如果你有一个普通的字符串,其中包含'\ _'字符,那么你可以使用任何普通的方法来匹配:
>>> "\rastring".find('\r')
0
>>>
如果您定义了一个实际“原始字符串”,那将无效,因为您放入的不是'\ r'字符,而是两个字符'\'和'r' :
>>> r"\rastring".find('\r')
-1
>>>
在这种情况下,或者在普通字符串碰巧有'\'和'r'字符的情况下,如果要找到这两个字符,则需要使用原始字符串进行搜索:< / p>
>>> r"\rastring".find(r'\r')
0
>>>
或者你可以通过转义反斜杠来搜索序列:
>>> r"\rastring".find('\\r')
0
>>>
答案 4 :(得分:0)
if '\r' in line:
如果这不是您的意思,请尽快告诉我们line
中的内容。这样做:
print repr(line)
并将结果复制/过去编辑您的问题。
重新开始你的主题:反斜杠是一个转义字符,“\ r”是一个转义字符。
答案 5 :(得分:0)
最简单的:
>>> s = r'\rRAWSTRING'
>>> s.startswith(r'\r')
True
除非我严重误解你所说的内容,否则你需要寻找r'\r'
(或等效但可能稍微不那么可读,'\\r'
),escape 序列'\r',不,回车符本身。