Viv*_*ian 3 python bash count line wc
我想知道为什么对于此处( train_en.txt) 和此处( )给出的文件,使用 bash 进行的简单行计数给出的行数与使用 python(版本 3.6)计算的行数不同train_de.txt。在 bash 中,我使用以下命令:
wc -l train_en.txt
wc -l train_de.txt
Run Code Online (Sandbox Code Playgroud)
输出分别为 4520620 和 4520620。
在 python 中,我使用以下命令:
print(sum(1 for line in open('train_en.txt')))
print(sum(1 for line in open('train_de.txt')))
Run Code Online (Sandbox Code Playgroud)
输出分别为 4521327 和 4521186。
当我使用 python 命令时
len(open('train_en.txt').read().splitlines())
len(open('train_de.txt').read().splitlines())
Run Code Online (Sandbox Code Playgroud)
我分别得到 4521334 和 4521186(其train_en.txt结果与之前的 python 命令的结果不匹配)。
作为参考,这些是通过连接WMT '14 英语到德语翻译任务中的Common Crawl、Europarl和News Commentary数据集(按顺序)生成的并行文本语料库,并且应具有相同的行数。
\ns 可以被视为多字节字符而不是实际的\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())
Run Code Online (Sandbox Code Playgroud)
所有结果均为 4520620 (与 的输出匹配wc -l),这意味着英语和德语语料库是按照预期并行的。
感谢@CharlesDuffy 的帮助。
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |