2016-12-11 70 views
0

我有一個被稱爲paintingJobs.txt一個文本文件中提取用戶輸入,每行以這種方式構成(E爲估算,A爲已接受的工作或N爲未接受)和已付金額。 下面是一個提取物:從文本文件

E5341,21/09/2015,C102,440,E,0

E5342,21/09/2015,C103,290,A,290

E5343,21/09/2015,C104,730,N,0

我想用戶輸入任何估計數目和要被輸出的該行。我怎樣才能做到這一點?

這裏是我想出了,但它不要求工作:

def option_A(): 
    es_num = str.upper (input ("Please enter the estimate number: ")) 
    with open('paintingJobs.txt', 'r') as file: 
     line = file.readline() 
     print (line, end = '') 
     if es_num in file: 
      #print whole line 

     else: 
      print("Not found") 

我想以這種格式來顯示信息

估計數:估計數

客戶ID:客戶ID

預計金額:最後總

估值日期:估計日期

狀態:狀態

回答

2

要打印行了,我建議你簡單地重複上每行文件如下:

def option_A(): 
    es_num = str.upper (input ("Please enter the estimate number: ")) 
    result = "Not found" 
    with open('paintingJobs.txt', 'r') as file: 
     for line in file: 
      if es_num in line: 
       result = line 
       break 
    print(result) 

要格式化顯示,您可以使用逗號作爲分隔符來分隔行以獲取信息列表。然後格式化顯示,如下所示:

data = result.split(',') 
print("Estimated number:{0}".format(data[0])) 
print("Customer ID:{0}".format(data[2])) 
...etc... 

然後,如果你需要一些數據更加複雜,從文本文件中檢索,強大的方式是使用正則表達式與實例的方法re.match(...)

+0

謝謝你的幫助。我有一個問題,爲什麼你在while循環之外使用break? – Hackers45

+0

我在第一場比賽中使用了break來停止「for」循環。閱讀您的文章,我假設只有一行可以匹配用戶輸入。我對嗎 ? –

+0

所以你可以使用'break'來停止任何類型的循環? – Hackers45