我正在开发一个交互式程序,我根据输入采取一些操作。对于应用程序,我想匹配输入流中的^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
字符以及为什么上述不起作用?
答案 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'
生成完全相同的字符。