1

我有

(Pdb) email
'\x00t\x00e\x00s\x00t\x00@\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'
(Pdb) print email
test@gmail.com

我需要验证这个值是否是电子邮件格式,但是,如何将此字符串转换为实际的 ascii 字符串?

4

2 回答 2

2

好像是用 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'
于 2013-11-09T09:24:44.367 回答
0

将您的电子邮件转换为 ASCII 字符串可以这样完成:

str(email.decode('utf-16le'))
于 2019-02-27T13:13:15.353 回答