python3编程报错【1】:ValueError: not enough values to unpack (expected 2, got 1)

在执行一个将文件(record.txt)中的数据进行分割并按规定保存起来的程序时,报错,在此进行记录,方便后期复习记忆。

任务要求:

1.读入record.txt文件中的数据内容

2.将a的对话单独逐行保存到名为“a_*.txt”的文件中(去掉“a:”)

3.将b的对话单独逐行保存到名为“b_*.txt”的文件中(去掉“b:”)

4.文件中总共有三段对话,分别保存为a_1.txt,b_1.txt,a_2.txt,b_2.txt,a_3.txt,b_3.txt共6个文件(其中,文件中不同的对话间已经使用“=========”分割)

源代码

f = open('E:\\python\\fishc-learing\\record.txt')

a = []
b = []
count = 1

for each_line in f:
    if each_line[:3] != '===':
        #字符串分割操作
        (role, line_spoken) = each_line.split(':', 1)
        if role == 'a':
            a.append(line_spoken)
        if role == 'b':
            b.append(line_spoken)
    else:
        #文件的分别保存操作
        file_name_a = 'a_' + str(count) + '.txt'
        file_name_b = 'b_' + str(count) + '.txt'

        a_file = open(file_name_a, 'w')
        b_file = open(file_name_b, 'w')

        a_file.writelines(a)
        b_file.writelines(b)

        a_file.close()
        b_file.close()

        a = []
        b = []
        count += 1

 #文件的分别保存操作
file_name_a = 'a_' + str(count) + '.txt'
file_name_b = 'b_' + str(count) + '.txt'

a_file = open(file_name_a, 'w')
b_file = open(file_name_b, 'w')

a_file.writelines(a)
b_file.writelines(b)

a_file.close()
b_file.close()

f.close()

执行结果

python3编程报错【1】:ValueError: not enough values to unpack (expected 2, got 1)_第1张图片

报错原因及解决方法:

程序要求将读取的每行以 : 为界分为两部分,如果找不到 : 就会报错。报错的原因是record.txt文件中将 :误写成中文冒号了。只要将record.txt文档中的冒号修改成英文冒号,保存即可。

优化后的代码:

def save_file(a,b,count):
     #文件的分别保存操作
    file_name_a = 'a_' + str(count) + '.txt'
    file_name_b = 'b_' + str(count) + '.txt'

    a_file = open(file_name_a, 'w')
    b_file = open(file_name_b, 'w')

    a_file.writelines(a)
    b_file.writelines(b)

    a_file.close()
    b_file.close()

def split_file(file_name):
    f = open('E:\\python\\fishc-learing\\record.txt')

    a = []
    b = []
    count = 1

    for each_line in f:
        if each_line[:3] != '===':
            #字符串分割操作
            (role, line_spoken) = each_line.split(':', 1)
            if role == 'a':
                a.append(line_spoken)
            if role == 'b':
                b.append(line_spoken)
        else:
            save_file(a,b,count)

            a = []
            b = []
            count += 1

    save_file(a,b,count)

    f.close()

split_file('record.txt')

你可能感兴趣的:(python)