在Python中匹配ctrl-M字符

时间:2016-09-03 14:07:09

标签: python

我正在开发一个交互式程序,我根据输入采取一些操作。对于应用程序,我想匹配输入流中的^M个字符。

为此,我发现^M的ASCII等价物为0xd,并使用hex(ord(char))将输入字符转换为ascii,并将两者进行比较。

if hex(ord(char)) == 0xd:
    take_action()

但这种情况从未评估为真。为了查看我是否使用了正确的ascii值,我编写了我要发送到文件的输入。

 0xd
 0xd
 0xd
 0x65
 0x78
 0x69
 0x74
 0xd
 0x65
 0x78
 0x69
 0x74
 0xd

有人能告诉我如何比较^M字符以及为什么上述不起作用?

1 个答案:

答案 0 :(得分:3)

0xd整数文字(它产生值13),但hex()返回一个字符串。 '0xd'可能看起来,如0xd,但不相等:

>>> hex(13)
'0xd'
>>> 0xd
13
>>> hex(13) == 0xd
False

删除hex()电话:

if ord(char) == 0xd:

或只使用字符串文字:

if char == '\x0d':

或同等的:

if char == '\r':

'\r''\x0d'生成完全相同的字符。