在哪种情况下,Unix命令行实用程序'wc'和Python的len(text.split())会给出不同的结果?
有些上下文,尽管它不相关,因为我们在这里要做的唯一事情是计算单词/标记(即,用空格分隔的字符集)。我正在使用IWSLT 2014语料库的德语文件,并且已经使用此script对它们进行了标记(即标点符号应该已经被标记等)。对于测试和验证集,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=
答案 0 :(得分:0)
不确定是否是您的情况,但这可能对某人有用。在装有 python 3.6 的系统上,split()
在不间断空间(\xa0
)上分割,而wc -w
却没有。 >