Python 3对Unipre对象使用不同的字符串文字。没有
u前缀(在规范表示中),并且一些非字母字符按字面显示,例如,
'só'在Python
3中是Unipre字符串(如果在输出中看到它,则在Python 2中是字节字符串)。
如果您只想知道函数是如何将输入文本拆分为标记的;您可以在单独的行上打印每个令牌,以使结果与Python 2/3兼容:
print("n".join(tokenizer.tokenize(s0)))Thisisatokenizedsentencesó
或者,您可以自定义
doctest.OutputChecker,例如:
#!/usr/bin/env pythonr""">>> u"This is a tokenized sentence su00f3".split()[u'This', u'is', u'a', u'tokenized', u'sentence', u'sxf3']"""import doctestimport reimport sysclass Py23DocChecker(doctest.OutputChecker): def check_output(self, want, got, optionflags): if sys.version_info[0] > 2: want = re.sub("u'(.*?)'", "''", want) want = re.sub('u"(.*?)"', '""', want) return doctest.OutputChecker.check_output(self, want, got, optionflags)if __name__ == "__main__": import unittest suite = doctest.DocTestSuite(sys.modules['__main__'], checker=Py23DocChecker()) sys.exit(len(unittest.TextTestRunner().run(suite).failures))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)