在什么情况下 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=
最佳答案
不确定这是否是您的情况,但它可能对某人有用。在我的系统上使用 python 3.6 split()
split 于 不间断空间 ( \xa0
),而 wc -w
才不是。
关于python - 为什么 wc -w 和 Python 的 len(text.split()) 给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55050711/