切分语料脚本报错、请问代码要如何修改呢?

 

 

你用这个试试。如果文件内容不对会提示出来,

如果中文是乱码,把 encoding='utf-8' 改成 encoding='gbk' 试试

 

import sys
def cut2(fpath, new_data_dir, nsrc='zh', ntgt='en'):
    fp = open(fpath, 'r', encoding='utf-8')
    src_fp = open(new_data_dir+'raw.'+nsrc, 'w', encoding='utf-8')
    tgt_fp = open(new_data_dir+'raw.'+ntgt, 'w', encoding='utf-8')
    for line in fp.readlines():
        li = line.replace('\n', '').split('\t')
        if len(li)!=2:
            print("出错的行:",line)
            continue
        tgt_line = li[0]
        src_line = li[1]
        src_fp.write(src_line + '\n')
        tgt_fp.write(tgt_line + '\n')
    src_fp.close()
    tgt_fp.close()

 

在 for line...的循环中,第一行加入print(line),输出看一下各行的内容,然后根据每行数据结构,再对其进行提取和保存。

这因为你文件内容中有的行中没有'\t',.split('\t')分割的列表中只有一个元素。 

一个元素没法赋值给 tgt_line , src_line 两个变量。 

 

你要读取的文件内容是什么样子的, 发上来看看,现在是你读取的文件内容有问题

如果文件内容中有空行,要去掉空行

 

'ISO-8859-1'编码不支持中文,

文件内容是中英双语语料,内容中有中文的话文件编码肯定不是 encoding='ISO-8859-1'

改成

 encoding='utf-8'

 encoding='gbk'  

试试

 

分析:这个错误的信息是,期望有两个返回值,但其实函数只有1个返回值

解决方法,现错误的原因是读取的文件有问题,读取的文件内不能包含换行符

建议把文件中的所有的换行去掉,如果有空行也去掉

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

不知道你想干什么。。。你是要分词么?

从一个文件里把内容读出来,分词后存入另一个文件?