这是因为.split('\t')分割的列表中元素多于2个。
如果你 只需要前2个元素,可以这样:
s="1\t2\t3\t4"
a , b , *li = s.split('\t')
print(a)
print(b)
print(li) #多于的元素会放到li中
可能数据中有多个 '\t' ,split 出来的结果就不止两个
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
最后有异常提示了,数据太多了吧?试试用小量数据测试一下代码
这因为你文件内容中有的行中没有'\t',.split('\t')分割的列表中只有一个元素。
一个元素没法赋值给 tgt_line , src_line 两个变量。
你要读取的文件内容是什么样子的, 发上来看看,现在是你读取的文件内容有问题
你用这个试试。如果文件内容不对会提示出来,
如果中文是乱码,把 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()
line.replace('\n', ' ').split('\t')
不能赋值给两个变量那,只能赋值给一个,返回的是一个列表
不是科班学生,就想知道这个脚本要怎么修改才能在ubuntu上跑起来...若能解决必有重谢!