0

我有一个问题,我似乎无法解决。我需要在文本文件中找到第二列和第三列的乘积(工资率 * 工作小时数)。我可以告诉我的程序为给定的行执行此操作(如下所示),但无法弄清楚如何为每一行执行此操作。

Filename = "database.txt"


rawtext = open(Filename, "r")
text = rawtext.read()
line = text.split('\n')
column0 = line[0].split('\t')
column1 = line[1].split('\t')
column2 = line[2].split('\t')

print("Last Name \t Hours \t Wages" )
print(column0[0],"\t",column0[2],"\t","$",int(column0[1])*int(column0[2]))
print(column1[0],"\t",column1[2],"\t","$",int(column1[1])*int(column1[2]))
print(column2[0],"\t",column2[2],"\t","$",int(column2[1])*int(column2[2]))

我很确定某种 for 循环或 while 语句是我正在寻找的,但我就是想不通。

该文件被格式化为

名称 \t 小时 \t 费率

如果重要的话。

4

2 回答 2

3

您应该使用 csv 模块。

import csv

with open("database.txt", "r", newline="") as csvfile:
    csvreader = csv.reader(csvfile, delimiter='\t')
    print("Last Name \t Hours \t Wages")
    for row in csvreader:
        print('{}\t{}$\t{}'.format(row[0], row[2], float(row[1])*float(row[2])))

编辑:从转换为int,转换为float。

您还应该验证输入。如果输入不符合预期,具体取决于您要执行的操作,您可以尝试以下操作:

import csv

with open("database.txt", "r", newline="") as csvfile:
    csvreader = csv.reader(csvfile, delimiter='\t')
    print("Last Name \t Hours \t Wages")
    for row in csvreader:
        try:
            print('{}\t{}\t{}'.format(row[0], row[2], float(row[1])*float(row[2])))
        except ValueError:
            # Handle cases where the casting of row[1] and row[2] to float fails
            code
        except IndexError:
            # Handle cases where index is out of bounds
            code
于 2013-10-18T01:26:14.427 回答
0

将 column0、column1、column2 保存为列表或元组。例子:

lines=line[0].split('\t'),line[1].split('\t'),line[2].split('\t')
print("Last Name \t Hours \t Wages" )
for column in lines:
    print(column[0],"\t",column[2],"\t","$",int(column[1])*int(column[2]))
于 2013-10-18T01:17:21.630 回答