逐行读取文件并在完成后打印

时间:2016-11-12 01:52:04

标签: python python-3.x search

所以我正在做一个“简单”的任务,因为像2小时仍然无法找到解决方案,所以我的问题在哪里: 我想逐行搜索一个文件,如果没有找到结果,最后打印一些东西,否则调用一个函数。

def DeletItemCheckUp():
    import re
    find = True
    itemNumber = input("\n what is the item you want to delet : ")
    fileItem = open('Data_Item', 'r', encoding='Utf-8')
    for line in fileItem:
        sr = re.search(r'^\b%s\b'%itemNumber,(line.split(';')[0]))
        if (sr == None):
            pass
    print("This item don't exist.")
    fileItem.close()
    if (find == True):
        return itemNumber
        DeletItem()

所以这是我遇到的不同尝试的问题:  1.打印“此项目不存在”。对于没有我的itemNumber的每一行。  2.当实际上没有找到匹配时,它不会调用DeletItem()。

代码的客观化: 要求项目去除,如果存在唯一的项目编号,则检入文件,如果存在,请调用DeletItem()去除它,否则,告诉用户该唯一的项目编号不存在。

2 个答案:

答案 0 :(得分:0)

很少有人在那里忽视你的要求。我们将使用一个标志(true / false)来知道我们什么时候发现了什么,并根据它我们将决定是否调用该函数或打印/返回该数字。

def DeletItemCheckUp():
    import re
    find = False      # initialize to False
    itemNumber = input("\n what is the item you want to delet : ")
    fileItem = open('Data_Item', 'r', encoding='Utf-8')
    for line in fileItem:
        sr = re.search(r'^\b%s\b'%itemNumber,(line.split(';')[0]))
        if (sr == None):
            continue  # do nothing and continue
        else:
            # we found the number, set the flag and break
            find = True
            break  # no need to continue searching
    fileItem.close()
    if (find):
        DeletItem()           # call the function
    else:
        print("This item don't exist.")

答案 1 :(得分:0)

1)用你的打印替换传球('此项不存在')。 “通行证”意味着“什么都不做。”

2)在返回后,您的DeleteItem()是。返回后没有执行任何操作,因为您已返回到调用函数的位置。你想要

else:
    DeleteItem()