# -*- coding: utf-8 -*- from email import policy from email import _header_value_parser as parser subjects = [ '我只是一个有那么一点点长的主题而已', # not crash 'Re: 我只是一个有那么一点点长的主题而已', # crash '回复: 回复:【北京大学-2017年招生信息公告】', # crash ] for sub in subjects: print('-'* 50) print('subject:', sub) parse_tree = parser.get_unstructured(sub) print('parse tree:', repr(parse_tree)) header = parser.Header([ parser.HeaderLabel([ parser.ValueTerminal('Subject', 'header-name'), parser.ValueTerminal(':', 'header-sep')]), parser.CFWSList([parser.WhiteSpaceTerminal(' ', 'fws')]), parse_tree]) try: folded = header.fold(policy=policy.default) except Exception as e: print('crashed: ', e) else: print('folded:', folded)