我想要做的只是让它只有我的.txt文件的第5列的打印行,而不是第3列。我已经尝试了好几次,但是我是python的新手,因此非常感谢任何帮助。
def Option_B():
print ("Estimate_Number","Customer_ID","Final_Total","Amount_Paid","Amount_Outstanding")
f = open("paintingJobs.txt", "r")
searchlines = f.readlines()
f.close()
for A, line in enumerate(searchlines):
if "A" in line and line[5]<line[3]:
print (line)
这就是我的.txt文件:
E5341,21/09/2015,C102,440,E,0
E5342,21/09/2015,C103,290,A,290
E5343,21/09/2015,C104,730,N,0
E5344,22/09/2015,C105,180,A,180
E5345,22/09/2015,C106,815,A,400
E5346,23/09/2015,C107,970,N,0
E5347,23/09/2015,C108,1050,E,0
E5348,23/09/2015,C109,370,A,200
E5349,25/09/2015,C110,480,A,250
E5350,25/09/2015,C111,330,A,330
E5351,25/09/2015,C112,1750,E,0
E5352,28/09/2015,C113,1500,N,0
E5353,28/09/2015,C114,272,A,200
E5354,29/09/2015,C115,560,E,0
E5355,29/09/2015,C116,530,A,450
E5356,29/09/2015,C117,860,E,0
E5357,29/09/2015,C118,650,E,0
E5358,29/09/2015,C119,380,A,380
E5359,29/09/2015,C120,980,N,0
E5360,30/09/2015,C121,1375,E,0
E5361,01/10/2015,C122,374,A,374
E5362,01/10/2015,C123,867,E,0
E5363,01/10/2015,C124,930,A,500
E5364,02/10/2015,C125,915,A,800
E5365,02/10/2015,C126,1486,A,1486
E5366,03/10/2015,C127,576,E,0
E5367,03/10/2015,C128,427,A,350
E5368,05/10/2015,C129,1346,A,1346
E5369,07/10/2015,C130,1756,N,0
E5370,07/10/2015,C131,432,E,0
E5371,10/10/2015,C132,289,A,289
E5372,10/10/2015,C133,923,E,0
E5373,10/10/2015,C134,1023,A,550
E5374,10/10/2015,C135,2070,E,0
E5375,10/10/2015,C136,687,N,0
E5376,13/10/2015,C137,297,A,297
E5377,13/10/2015,C138,829,E,0
E5378,13/10/2015,C139,1503,E,0
E5379,14/10/2015,C140,850,E,0
E5380,15/10/2015,C141,425,A,425
答案 0 :(得分:1)
现在,您正在比较行中的第3个和第5个字符,而不是第3和第5列。您必须使用逗号分隔符进行拆分,并且还应在比较之前将这些列转换为整数:
with open("data.txt") as f:
for line in f:
columns = line.split(',')
if "A" in columns and int(columns[5]) < int(columns[3]):
print(line)
或使用csv
模块:
import csv
with open("data.txt") as f:
reader = csv.reader(f, delimiter=',')
for columns in reader:
if "A" in columns and int(columns[5]) < int(columns[3]):
print(columns)
答案 1 :(得分:0)
不是Python解决方案,但您可以使用awk
($0
是整行,$6
是从1开始编号的第6列:
$ gawk -F , '$6 < $4 {print $0}' < so.txt
输出:
E5341,21/09/2015,C102,440,E,0
E5343,21/09/2015,C104,730,N,0
E5345,22/09/2015,C106,815,A,400
E5346,23/09/2015,C107,970,N,0
E5347,23/09/2015,C108,1050,E,0
E5348,23/09/2015,C109,370,A,200
E5349,25/09/2015,C110,480,A,250
E5351,25/09/2015,C112,1750,E,0
E5352,28/09/2015,C113,1500,N,0
E5353,28/09/2015,C114,272,A,200
E5354,29/09/2015,C115,560,E,0
E5355,29/09/2015,C116,530,A,450
E5356,29/09/2015,C117,860,E,0
E5357,29/09/2015,C118,650,E,0
E5359,29/09/2015,C120,980,N,0
E5360,30/09/2015,C121,1375,E,0
E5362,01/10/2015,C123,867,E,0
E5363,01/10/2015,C124,930,A,500
E5364,02/10/2015,C125,915,A,800
E5366,03/10/2015,C127,576,E,0
E5367,03/10/2015,C128,427,A,350
E5369,07/10/2015,C130,1756,N,0
E5370,07/10/2015,C131,432,E,0
E5372,10/10/2015,C133,923,E,0
E5373,10/10/2015,C134,1023,A,550
E5374,10/10/2015,C135,2070,E,0
E5375,10/10/2015,C136,687,N,0
E5377,13/10/2015,C138,829,E,0
E5378,13/10/2015,C139,1503,E,0
E5379,14/10/2015,C140,850,E,0