2015-06-22 30 views
0

是否可以從另一個文件中獲取數據並將其與我的主要輸入文件進行比較並替換其中的字符串。我無法解釋清楚,所以我只會告訴你。從另一個文件中提取數據

輸入:

Employee Number/Employee Name/Employee Extension 
2022/Johnny Storm/188 
2023/Reed Richards/189 
2024/Sue Storm/190 
2025/Ben Grimm/191 

日誌在我的主輸入文件只打印員工人數:

Employee Number, Time In 
2022,07:27:01 
2025,06:59:49 
2023,06:40:31 
2024,06:40:28 

那麼我現在要做的是...

僞代碼:

with open(emplst) as ulst: 
    for line in ulst: 
    EmpNum,EmpName,EmpExt = (item.strip() for item in line.split('/')) 
    ulist[EmpNum] = dict(zip(('EmpNum'),(EmpName))) 

if enum in EmpNum: 
    replace enum with EmpNum + "," + EmpName + " Ext. " + EmpExt 

輸出:

2022,Johnny Storm Ext. 188,07:27:01 

注: 我也尋求從這種方法的一些信息,但我一直在替換文本失敗:Extract data from lines of a text file

回答

0

現在的問題是:

with open(emplst) as ulst: 
    for line in ulst: 
    EmpNum,EmpName,EmpExt = (item.strip() for item in line.split('/')) 
    ulist[EmpNum] = dict(zip(('EmpNum'),(EmpName))) 

ulst是不是一個你可以簡單地賦值的字典。它是一個file對象,並且只能以只讀模式打開。

爲此,我建議你
- >湊合write所有的東西你想修改後

臨時文件 - >刪除原始文件

- >然後重命名臨時文件轉換爲原始文件。

有點像這樣:

with open(emplst) as ulst: 
    with open("temp.txt", "w") as temp: 
     for line in ulst: 
      EmpNum,EmpName,EmpExt = (item.strip() for item in line.split('/')) 
      if enum in EmpNum: 
       temp.write(EmpNum + "," + EmpName + " Ext. " + EmpExt) 
      else: 
       temp.write(line) #dont touch it if record is not found 
os.remove(emplst) 
os.rename("temp.txt",emplst) 
相關問題