繁体   English   中英

为什么wc -w和Python的len(text.split())给出不同的结果?

[英]Why do wc -w and Python's len(text.split()) give a different result?

在哪种情况下,Unix命令行实用程序“ wc”和Python的len(text.split())会给出不同的结果?

有点上下文,尽管它不相关,因为我们在这里要做的唯一事情是对单词/标记(即,用空格分隔的字符集)进行计数。 我正在使用IWSLT 2014语料库的德语文件,并且已经使用此脚本将它们标记化了(即标点符号应该已经被标记化了,等等)。 对于测试和验证集,wc和Python给出相同数量的单词(分别为125754个单词和140433个单词)。 对于训练集,他们没有。 使用Python 3,我得到以下结果:

python3 $ text = open('train.de','r').read()
python3 $ len(text.split())
3100720

使用wc实用程序时:

$ wc -w train.de 
3100699 train.de

请注意,差异非常细微,但足以引起问题。 大约310万个单词的文本中只有21个单词的差异。

可能会发生什么? 我已经检查了两个文档,并且两个功能应该等效。

提前致谢。

编辑 :有关我的本地环境的其他信息。 具有区域设置的Ubuntu 16.04提供以下输出:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=es_ES.UTF-8
LC_TIME=es_ES.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=es_ES.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=es_ES.UTF-8
LC_NAME=es_ES.UTF-8
LC_ADDRESS=es_ES.UTF-8
LC_TELEPHONE=es_ES.UTF-8
LC_MEASUREMENT=es_ES.UTF-8
LC_IDENTIFICATION=es_ES.UTF-8
LC_ALL=

不确定是否是您的情况,但这可能对某人有用。 在我使用python 3.6的系统上, split()不间断空格\\xa0 )上分割,而wc -w则不。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM