gpt4 book ai didi

python - 读取文件并处理具有相同 ID 的元素

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:36 25 4
gpt4 key购买 nike

所以我想逐行处理下面给出的示例文件,并一次处理所有具有相同 ID(下面文件中的 1、2、3、7)的记录,然后在处理完后转到下一个 ID。我写了一些代码,读取这个文件一次,读取第一个 id,将它存储在一个变量中,然后关闭文件。之后我再次打开文件并逐行处理它。

testprogdata.csv

10,xyz,abx
10,mno,mnc
10,mnp,klo
10,apl,lko
2,pol,okl
3,jkl,mlp
3,jsd,sdf
3,fds,lpo
7,iko,opi

读取上述文件的Python程序:

file=open('testprogdata.csv')
for line in file:
sL=line.split(',')
en=sL[0]
break
file.close()

file=open('testprogdata.csv')

for line in file:
sL=line.split(',')
x=sL[0]
if(x==en):
print x //Do something processing
else:
#process(x)
en=x
print "-----------"
print x


Output

10
10
10
10
----------
2
----------
3
3
3
----------
7

现在我对自己编写的代码不太满意,因为对于一个简单的问题来说,这似乎是一种糟糕的编程模式。完成上述非常常见的模式的好方法是什么?即使我使用散列,我也会在上面做同样的事情。

最佳答案

Pythonic 方式是使用 itertools.groupby , 和一个 csv.reader :

import csv
import itertools

def process(stuff):
print ' '.join(stuff)

with open("values.csv") as f:
rd = csv.reader(f)
for idnum, group in itertools.groupby(rd, key=lambda x: x[0]):
print "processing ID {}".format(idnum)
for item in group:
process(item)

关于python - 读取文件并处理具有相同 ID 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21454104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com