2 回答
TA贡献1719条经验 获得超6个赞
请注意,您的示例文本很简单,但标点规则可能很复杂或未正确遵守。包含 2 个相邻空格的文本是什么(是的,它不正确但很频繁)?如果作者更习惯法语并在冒号或分号前后写空格怎么办?
我认为's构造需要特殊处理。怎么样:"""John has a bicycle. Mary says that her one is nicer that John's."""恕我直言,这个词John在这里出现了两次,而你的算法会看到 1John和 1 Johns。
此外,由于 Unicode 文本现在在 WEB 页面上很常见,您应该准备好找到空格和标点符号的高代码等效项:
“ U+201C LEFT DOUBLE QUOTATION MARK
” U+201D RIGHT DOUBLE QUOTATION MARK
’ U+2019 RIGHT SINGLE QUOTATION MARK
‘ U+2018 LEFT SINGLE QUOTATION MARK
U+00A0 NO-BREAK SPACE
此外,根据这个较旧的问题,删除标点符号的最佳方法是translate. 链接问题使用 Python 2 语法,但在 Python 3 中您可以执行以下操作:
paragraph = paragraph.strip() # remove initial and terminal white spaces
paragraph = paragraph.translate(str.maketrans('“”’‘\xa0', '""\'\' ')) # fix high code punctuations
paragraph = re.replace("\w's\s", "", paragraph) # remove 's
paragraph = paragraph.translate(str.maketrans(None, None, string.punctuation) # remove punctuations
words = paragraph.split()
添加回答
举报