尝试在Python中使用Regexp解析包含收缩

2024-05-05 16:55:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用python中的单词云生成器解析单词。生成器是用python2编写的,但我正在Anaconda中运行。在生成器中运行的一些文本会抛出“don”而不是“don”,还有常见的缩略结尾,如“ll”或“re”。与其将它们放入stop-word文件,我还希望在文本中出现频率很高的单词(如“don-not”)中包含它们。已经存在的代码如下:

regexp = self.regexp if self.regexp is not None else r"\w[\w']+"

考虑到包括使徒书,我试图用以下内容代替:

regexp = self.regexp if self.regexp is not None else r"(?u)\b\w[a-zA-Z0-9_']+\b"

我正在浏览的测试文本是古腾堡项目的《爱丽丝梦游仙境历险记》,其中所有与项目相关的文本和许可都被删除了。在输出文件中,缩略语仍然出现中断,“don”和“ll”是最常见的词。我用find检查了文本文件,没有发现任何断字是错误的根源。我用《白鲸》也得到了类似的结果。你知道吗

有什么建议吗?你知道吗

下面是一个示例,在regexp中与“r”\w[\w']+”一起运行时,生成“ll”和“wonder”作为单词:

    ‘Well!’ thought Alice to herself, ‘after such a fall as this, I shall
    think nothing of tumbling down stairs! How brave they’ll all think me at
    home! Why, I wouldn’t say anything about it, even if I fell off the top
    of the house!’ (Which was very likely true.)

    Down, down, down. There was nothing else to do, so Alice soon began
    talking again. ‘Dinah’ll miss me very much to-night, I should think!’

感谢下面的Matteo,我使用的解决方案是:

regexp = self.regexp if self.regexp is not None else r"(?u)\b\w[a-zA-Z0-9_'’]+\b"


Tags: 文件to文本selfnoneifisnot
1条回答
网友
1楼 · 发布于 2024-05-05 16:55:50

在正则表达式中,您正在寻找一个直撇号(',U+0027),但原始文本使用(U+2019,一个“右单引号”)。你必须相应地调整你的正则表达式。你知道吗

顺便说一句,考虑到现在您开始必须匹配“复杂”的Unicode字符(特别是UTF-8中一个字节都不能匹配的字符),您可能需要确保在Python2中的(unicode,Python3中的str)周围使用正确的Unicode字符串以避免意外。你知道吗

相关问题 更多 >