Python 3-文件中所有数字的总和
我有一个由许多文件组成的目录,每个文件的格式如下:Python 3-文件中所有数字的总和,python,file,Python,File,我有一个由许多文件组成的目录,每个文件的格式如下: Vertie,F,5 Wilma,F,17 John,M,11 William,M,15 对于所有文件,我需要检查特定的名称是否出现在特定的行号上。如果是,则得到第3列“F”的和 我已经编写了以下代码,但似乎不起作用: f1 = open('abc.txt') f2 = open('abc.txt') for i, line in enumerate(f1): line
Vertie,F,5
Wilma,F,17
John,M,11
William,M,15
对于所有文件,我需要检查特定的名称是否出现在特定的行号上。如果是,则得到第3列“F”的和
我已经编写了以下代码,但似乎不起作用:
f1 = open('abc.txt')
f2 = open('abc.txt')
for i, line in enumerate(f1):
line = line.strip()
name, sex, count = line.split(',')
if i == 2 and name == 'Wilma':
for line in f2:
line = line.strip()
name, sex, count = line.split(',')
if sex == 'F':
result += int(count.strip())
关于我哪里出了问题,有什么建议吗?您为什么要使用Python来解决这个问题?在
awk
中非常简单:
awk -F, 'BEGIN{sum=0}/Wilma/{sum+=$3} END{print sum}' file1 file2 ...
基于注释编辑:为了安全起见,您可以明确检查第一个字段是否为Wilma:
awk -F, '{if($1=="Wilma"){sum+=$3}} END{print sum}' file1 file2 ...
如果您想对任意名称、性别和行号执行此操作;考虑这一点:
def verify(filename, line_number, line_name, line_sex, result):
with open(filename, 'r') as f:
lines = f.readlines()
for i, line in enumerate(lines):
i = i+1
line = line.strip()
name, sex, count = line.split(',')
if not bool(set([i, name, sex]) - set([line_number, line_name, line_sex])):
result += int(count)
return result
有了这个,你可以检查任何一行的名字和性别
# starting point
result = 0
# check if line 2 is a female named Wilma
result = verify('abc.txt', 2, 'Wilma', 'F', result)
print(result) # prints 17
您可以对任何行、名称或性别执行此操作,结果将持续上升,直到您重置它。代码似乎没有多大意义。。。为什么
Wilma
是硬编码的?为什么你要用两个迭代器对你的文件进行迭代?你能比“它似乎不起作用”更具体一点吗?请重新回答这个问题。示例输入和输出可能会有所帮助。“检查特定名称是否出现在特定行号处。如果出现,则获取“F”第3列的总和”-抱歉,这并不意味着什么。@CommuSoft我正在尝试查看文件第2行是否有一个名为“Wilma”的字符串。如果存在,则获取第3列的总和,其中sex='F'可能使用^
标识符作为Wilma
?人们永远不知道是否添加了其他列(如姓氏)。