首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >wc -l和python行数不同

wc -l和python行数不同
EN

Stack Overflow用户
提问于 2019-06-27 06:56:34
回答 1查看 307关注 0票数 3

我想知道为什么对于给定的here (train_en.txt)和here (train_de.txt)文件,使用bash进行简单的行数计算得到的行数与使用python (3.6版)计算的行数不同。在bash中,我使用以下命令:

代码语言:javascript
复制
wc -l train_en.txt
wc -l train_de.txt

输出分别为4520620和4520620。

在python中,我使用以下命令:

代码语言:javascript
复制
print(sum(1 for line in open('train_en.txt')))
print(sum(1 for line in open('train_de.txt')))

输出分别为4521327和4521186。

当我使用python命令时

代码语言:javascript
复制
len(open('train_en.txt').read().splitlines())
len(open('train_de.txt').read().splitlines())

我分别得到了4521334和4521186 (其中train_en.txt结果与前面的python命令不匹配)。

作为参考,这些是通过连接WMT '14 English to German translation task中的Common CrawlEuroparlNews Commentary数据集(按该顺序)生成的平行文本语料库,并且应该具有相同的行数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 07:49:26

可以将\n视为多字节字符,而不是实际的\n。可以通过使用字节串编码来避免这种情况。命令

代码语言:javascript
复制
print(sum(1 for line in open('train_en.txt', mode='rb')))
print(sum(1 for line in open('train_de.txt', mode='rb')))
len(open('train_en.txt', mode='rb').read().splitlines())
len(open('train_de.txt', mode='rb').read().splitlines())

所有结果都是4520620 (与wc -l的输出匹配),这意味着英语和德语语料库是平行的。

感谢@CharlesDuffy的帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56781896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档