迭代python中的列表来检查文件行长度

时间:2014-12-10 14:19:38

标签: python list file line

我已经解决了这个问题好几个小时了,不管我扔了什么,我都不能为我的生活让它发挥作用。

目标是导入一个文件,每个行包含12个数字,无论用户想要输入多少行。 (它正在检查UPC代码)。我尝试做的是导入文件,然后设置一个循环来检查文件中的每一行,如果长度超过12个字符或者它下面会发出错误,如果它包含任何字母也是如此它吐了一个错误(我还没到这一点。) 无论如何,这是我的代码:

iven = input("what is the file name")
infile = open(iven, "r")
lines = infile.read()
v = lines.split()
print(lines)
print(v)


for i in range(len(v)):
    if len(v[i]) > 12:
        print("UPC is too long")
    elif len(v[i]) < 12:
        print("UPC is too short")
    else:
        print(v)

到目前为止,这是一团糟。我可以让它一次读取一个字符的文本文件,或者它计算整个事物,它不会一行一行。如有任何问题,我可以帮您解决此问题

1 个答案:

答案 0 :(得分:5)

迭代文件对象直接从文件中逐行生成数据

iven = input("what is the file name")
with open(iven) as f:
    for line in f:
        line = line.rstrip()  # presumably you're not interested in any newline characters
        if len(line) > 12:
            print("UPC is too long")
        elif len(line) < 12:
            print("UPC is too short")
        elif not line.isdigit():
            print("UPC isn't a number")
        else:
            print(v)

或者,如果您只是想检查文件没有更少的行,或者大于12个字符(也许您也想要line.rstrip()

if all(len(line.rsplit()) == 12 and line.rsplit().isdigit() for line in open(iven)):
    print("All good!")