Вот мой код:
inputFile = open("Employees.txt", "r").read()
inputList = inputFile.split("\n")
fList = []
def listString(s):
string = ""
return (string.join(s))
for i in inputList:
for x in i.split(","):
fList.append(x)
for y in range (len(fList)):
**if fList[y] == "90000":
fList[y] = str(90000 * 1.05) + "\n"
elif fList[y] == "75000":
fList[y] = str(75000 * 1.05) + "\n"
elif fList[y] == "110000":
fList[y] = str(110000 * 1.05) + "\n"
else:
fList[y] = fList[y] + ","**
print(listString(fList))
file = open("Emp_Bonus.txt", "a")
file.write(listString(fList))
Employees.txt содержит следующее:
Adam Lee,Programmer,90000 Morris Heather,DA,75000 John Lee,PM,110000
Я пытаюсь получить следующий результат:
Adam Lee,Programmer,94500 Morris Heather,DA,78750 John Lee,PM,115500
Часть кода, выделенная жирным шрифтом, является проблемой. Входные зарплаты должны иметь разные значения, а не код, работающий только для выборочного ввода. Заработную плату нужно умножить на 1,05. Как мне это сделать? Спасибо!
@JohnnyMopp Я не уверен, куда именно вставить эти две строки кода. Не могли бы вы уточнить, пожалуйста?
Я хотел бы использовать Pandas:
import pandas as pd
df = pd.read_csv("Employees.txt",header=None)
df[2] = df.loc[df[2].isin([90000,75000,110000]),2]*1.05
df[2] = df[2].astype(int)
df.to_csv("Emp_Bonus.txt",mode = "a",header=None)
Мне не разрешено использовать библиотеки для этого кода. Есть ли способ сделать это без внешних библиотек?
Другой способ без какой-либо библиотеки. Просто прочитайте строки файла в виде списка, используя readlines()
, а затем повторите каждую строку. Измените только последнюю часть после ее разделения, используя split(',')
, например, оклад каждой строки, и, наконец, создайте новый файл в соответствии с требованиями.
multiply, final_result = 1.05, []
with open('Employees.txt', 'r') as f:
fList = f.readlines()
if fList:
for line in fList:
employee_info = line.split(',')
name = employee_info[0]
designation = employee_info[2]
salary = float(employee_info[2].replace('\n','').strip()) * multiply
final_result.append(f"{name},{employee_info[1]},{salary}")
if final_result:
with open('Emp_Bonus.txt', 'w') as f:
f.write('\n'.join(final_result))
Выход:
Adam Lee,Programmer,94500.0
Morris Heather,DA,78750.0
John Lee,PM,115500.0
Возможно, вы захотите сохранить данные в виде 2-го списка:
for i in inputList: fList.append(i.split(","))
Затем вы сможете получить зарплату с помощьюint(flist[y][2])