我有
(Pdb) email
'\x00t\x00e\x00s\x00t\x00@\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'
(Pdb) print email
test@gmail.com
我需要验证这个值是否是电子邮件格式,但是,如何将此字符串转换为实际的 ascii 字符串?
我有
(Pdb) email
'\x00t\x00e\x00s\x00t\x00@\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'
(Pdb) print email
test@gmail.com
我需要验证这个值是否是电子邮件格式,但是,如何将此字符串转换为实际的 ascii 字符串?
好像是用 utf-16 编码的。
>>> '\x00t\x00e\x00s\x00t\x00@\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'.decode('utf-16')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\utf_16.py", line 16, in decode
return codecs.utf_16_decode(input, errors, True)
UnicodeDecodeError: 'utf16' codec can't decode byte 0x00 in position 28: truncated data
并截断:
>>> '\x00t\x00e\x00s\x00t\x00@\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'[1:].decode('utf-16')
u'test@gmail.com'
>>> '\x00t\x00e\x00s\x00t\x00@\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'[1:].decode('utf-16-le')
u'test@gmail.com'
>>> '\x00t\x00e\x00s\x00t\x00@\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'.decode('utf-16-be', 'ignore')
u'test@gmail.com'
将您的电子邮件转换为 ASCII 字符串可以这样完成:
str(email.decode('utf-16le'))