2015-06-22 31 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) 
相关问题