我想知道为什么对于给定的here (train_en.txt
)和here (train_de.txt
)文件,使用bash进行简单的行数计算得到的行数与使用python (3.6版)计算的行数不同。在bash中,我使用以下命令:
wc -l train_en.txt
wc -l train_de.txt
输出分别为4520620和4520620。
在python中,我使用以下命令:
print(sum(1 for line in open('train_en.txt')))
print(sum(1 for line in open('train_de.txt')))
输出分别为4521327和4521186。
当我使用python命令时
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 Crawl、Europarl和News Commentary数据集(按该顺序)生成的平行文本语料库,并且应该具有相同的行数。
发布于 2019-06-27 07:49:26
可以将\n
视为多字节字符,而不是实际的\n
。可以通过使用字节串编码来避免这种情况。命令
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的帮助。
https://stackoverflow.com/questions/56781896
复制相似问题