ValueError:没有足够的值进行解包(预期值为8,实际值为1)

2024-09-30 20:29:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我的拆分函数有问题吗

import sys
import os
import re

filename= "data.txt"
mydata= []
with open(filename, "r") as f:
    print(f)
    for i in f:
            line = 0
            line += 1

record_number, size, username, transaction, field_type, numeric_value, character_value, date_value = i.split('|')

            line_to_print = makeLineToPrint(ok = True)    

            if field_type == 'N':
                if character_value != ' ' or date_value != ' ' or numeric_value == ' ':
                            line_to_print = makeLineToPrint(ok = False)        
            elif field_type == 'C':
                    if numeric_value != ' ' or date_value != ' ' or character_value == ' ':
                            line_to_print = makeLineToPrint(ok = False)        

            elif field_type == 'D':
                    if numeric_value != ' ' or character_value != ' ' or date_value == ' ':
                            line_to_print = makeLineToPrint(ok = False)
def makeLineToPrint(ok):
    if ok:
        line_to_print = "{}{} OK--- {}|{}|{}|{}|{}|{}|{}".format(line, record_number, size, username, transaction, field_type, numeric_value, character_value, date_value)
    else:
         line_to_print = "{}{} NO--- {}|{}|{}|{}|{}|{}".format(line, size, record_number, transaction, field_type, numeric_value, character_value, date_value)
    return line_to_print

print(line_to_print)

Tags: ortoimportfielddateifvaluetype
1条回答
网友
1楼 · 发布于 2024-09-30 20:29:57

您需要在with open()缩进中移动for循环,如下所示:

with open(filename,"r") as f:
    for i in f:
       do_stuff()

我已经修复了缩进错误,并在导入之后移动了函数定义

import sys
import os
import re

def makeLineToPrint(ok):
    if ok:
        line_to_print = "{}{} OK - {}|{}|{}|{}|{}|{}|{}".format(line, record_number, size, username, transaction, field_type, numeric_value, character_value, date_value)
    else:
        line_to_print = "{}{} NO - {}|{}|{}|{}|{}|{}".format(line, size, record_number, transaction, field_type, numeric_value, character_value, date_value)
    return line_to_print

filename= "data.txt"
mydata= []
with open(filename, "r") as f:
    print(next(f))
    line = 0
    for i in f:
        line += 1

        record_number, size, username, transaction, field_type, numeric_value, character_value, date_value = i.split('|')

        line_to_print = makeLineToPrint(ok = True)    

        if field_type == 'N':
            if character_value != ' ' or date_value != ' ' or numeric_value == ' ':
                        line_to_print = makeLineToPrint(ok = False)        
        elif field_type == 'C':
                if numeric_value != ' ' or date_value != ' ' or character_value == ' ':
                        line_to_print = makeLineToPrint(ok = False)        

        elif field_type == 'D':
                if numeric_value != ' ' or character_value != ' ' or date_value == ' ':
                        line_to_print = makeLineToPrint(ok = False)
        print(line_to_print)

相关问题 更多 >