【问题标题】:How can I search and show all records from my txt file?如何从我的 txt 文件中搜索和显示所有记录?
【发布时间】:2021-07-31 05:30:52
【问题描述】:

我之前尝试过一些代码,但没有成功。我的意思是当我在一个文件中搜索一个单词时,它只显示它的第一条记录,然后转向询问返回选项。它完全忽略了第二条记录。此外,当我搜索错误的客户名称时,它不会打印“不存在”之类的语句。这是我的练习,可能是一个简单的问题,但我仍然是初学者。希望任何人都可以帮助我。谢谢,感谢所有帮助。

def search_payment():
  print("Please Enter Customer Username For Searching")
  search_username = input("Customer Username: ").upper()

  show_search_payment = open("customer_order_records.txt", "r")
  view_payment = show_search_payment.read()
  view_payment_by_line = view_payment.splitlines()
  show_search_payment.close()
  for line in view_payment_by_line:
      data = line.split(",")
      if search_username in data[0]:
          if search_username == data[0]:
              print("Searching.....")
              time.sleep(1)
              print("Done Searching!\n\n\n*----- "+ search_username + " CUSTOMERS ORDERS AND PAYMENT RECORDS -----*")
              print("*" * 45)
              print(" Username\t\t: ", data[0],"\n Date\t\t\t: ", data[1],"\n Ordered\t\t: ", data[2],"\n Total Quantity : ", data[3],"\n Total Amount\t: ", data[4],"\n Payment Method\t: ", data[5])
              print("*" * 45)
              while True:
                  back = input("\n(b) Back: ")
                  if back == "b" or back == "B":
                      search_order_payment()
                  else:
                      print("***Invalid Input! Please Try Again\n")
                      search_payment()
          else:
              print("Customer Username Does Not Exist! Please Try Again!\n")
              while True:
                  try_again = input("(b) Back  (c) Continue : ")
                  if try_again == "b" or try_again == "B":
                      search_order_payment()
                  elif try_again == "c" or try_again == "C":
                      search_payment()
                  else:
                      print("***Invalid Input! Please Try Again\n")
                      search_payment()
           

这是我在 txt 文件中的内容:

ABC,Sun Jul 18 10:00:56 2021,NASI GORENG BIASA;RM6.00,1,RM6.00,CREDIT CARD,
WONG,Sun Jul 18 11:18:57 2021,ROTI CANAI KOSONG;RM1.60    TEH TARIK;RM2.60,3,RM5.80,TOUCH' N GO E-WALLET,
STANLEY,Mon Jul 19 11:05:18 2021,NASI GORENG SEAFOOD;RM10.50    NESCAFE NAI;RM2.80,2,RM13.30,CREDIT CARD,
WONG,Mon Jul 19 12:05:26 2021,ROTI CANAI PLANTA;RM3.90    TEH TARIK;RM2.60,3,RM10.40,TOUCH' N GO E-WALLET,
MAY,Mon Jul 19 12:20:51 2021,MURTABAK AYAM CHEESE;RM9.50    MILO;RM2.80,3,RM21.80,TOUCH' N GO E-WALLET,

【问题讨论】:

    标签: python search text-files record show


    【解决方案1】:

    对于您的问题,您应该使用for-else
    这是工作代码:

    import time
    
    def search_payment():
      print("Please Enter Customer Username For Searching")
      search_username = input("Customer Username: ").upper()
    
      show_search_payment = open("customer_order_records.txt", "r")
      view_payment = show_search_payment.read()
      view_payment_by_line = view_payment.splitlines()
      show_search_payment.close()
      for line in view_payment_by_line:
          data = line.split(",")
          if search_username==data[0]:
              print("Searching.....")
              time.sleep(1)
              print("Done Searching!\n\n\n*----- "+ search_username + " CUSTOMERS ORDERS AND PAYMENT RECORDS -----*")
              print("*" * 45)
              print(" Username\t\t: ", data[0],"\n Date\t\t\t: ", data[1],"\n Ordered\t\t: ", data[2],"\n Total Quantity : ", data[3],"\n Total Amount\t: ", data[4],"\n Payment Method\t: ", data[5])
              print("*" * 45)
              while True:
                  back = input("\n(b) Back: ")
                  if back == "b" or back == "B":
                      search_order_payment()
                  else:
                      print("***Invalid Input! Please Try Again\n")
                      search_payment()
      else:
          print("Customer Username Does Not Exist! Please Try Again!\n")
          while True:
              try_again = input("(b) Back  (c) Continue : ")
              if try_again == "b" or try_again == "B":
                  search_order_payment()
              elif try_again == "c" or try_again == "C":
                  search_payment()
              else:
                  print("***Invalid Input! Please Try Again\n")
                  search_payment()
    search_payment()
    

    您的代码只是在搜索列表的第一个元素,因为一开始有 if-else 并且不会让程序检查列表的第二个元素。所以,你正面临这个问题。

    输出(用 2 个现有值和 1 个随机值测试):

    Please Enter Customer Username For Searching
    Customer Username: ABC  <------------------------------ INPUT
    Searching.....
    Done Searching!
    
    
    *----- ABC CUSTOMERS ORDERS AND PAYMENT RECORDS -----*
    *********************************************
     Username               :  ABC
     Date                   :  Sun Jul 18 10:00:56 2021
     Ordered                :  NASI GORENG BIASA;RM6.00
     Total Quantity :  1
     Total Amount   :  RM6.00
     Payment Method :  CREDIT CARD
    *********************************************
    
    (b) Back: c
    ***Invalid Input! Please Try Again
    
    Please Enter Customer Username For Searching
    Customer Username: MAY  <---------------------------------- INPUT
    Searching.....
    Done Searching!
    
    
    *----- MAY CUSTOMERS ORDERS AND PAYMENT RECORDS -----*
    *********************************************
     Username               :  MAY
     Date                   :  Mon Jul 19 12:20:51 2021
     Ordered                :  MURTABAK AYAM CHEESE;RM9.50    MILO;RM2.80
     Total Quantity :  3
     Total Amount   :  RM21.80
     Payment Method :  TOUCH N GO E-WALLET
    *********************************************
    
    (b) Back: c
    ***Invalid Input! Please Try Again
    
    Please Enter Customer Username For Searching
    Customer Username: test  <----------------------------------- INPUT
    Customer Username Does Not Exist! Please Try Again!
    
    (b) Back  (c) Continue : c
    Please Enter Customer Username For Searching
    Customer Username:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多