从文件中读取数据,将其拆分为列表,然后获取数据并将其放入函数中

时间:2018-11-23 18:03:01

标签: python python-3.x function

我必须提取一个名为employee.txt的文件,并提取每个人工作的名称和工作时间。将该小时数放入函数中,然后让该函数返回小时数乘以每小时$ 15.25的计算结果。

这是文件中包含的数据

John Doe,40
Sally Buck,45

这就是我的代码

raw_data = []
with open("employees.txt") as fo:
    for line in fo:
        row = line.split()
        if not row:
            continue
        name = row[0]
        hours = row[1]
        raw_data.append(name, hours)
    def grosspay(hours):
        pay = 0
        hours = row[1]
        hours * float(15.25) = int(pay)
        return pay

我要求澄清读取文件并将时间正确放入函数中。我可以做剩下的事情,我只想确保自己正在做以下工作:读取文件,将其拆分为列表,然后使用列表中的数据通过函数查找我的答案。

到目前为止,我的代码没有错误。我问我读取文件,将其拆分为字符串,然后花费该小时数并在函数中使用它的过程是否正确完成。

1 个答案:

答案 0 :(得分:4)

您可以通过简单的方式实现相同的功能。

raw_data = []
# defining the function to calculate pay
def grosspay(hours):
        return "$"+str(int(hours) * float(15.25))

print(f'{"Name":30}{"Pay"}')

with open("employee.txt", "r") as f:
    # reading a file line-by-line
    for i in f.readlines():
        # splitting name and work hours
        x = i.split(",")
        print(f'{x[0]:30}{grosspay(x[1])}')
        # appending name and pay to raw_data
        raw_data.append((x,[0],grosspay(x[1])))

输出:

Name                          Pay
John Doe                      $610.0
Sally Buck                    $686.25

替代pandas

import pandas as pd
# reading a file
df = pd.read_csv("dummy.txt", sep=",",names=["Name", "Hours"])
# calculating pay
df["pay"] = df.Hours.apply(lambda x: '$'+str((int(x) * float(15.25))))
# dropping Hours column
df.drop(["Hours"], axis = 1, inplace=True)
# if you want to save in file
df.to_csv("pay.csv")
print(df)

输出:

         Name      pay
0    John Doe   $610.0
1  Sally Buck  $686.25