3
我在這樣的文件中的數據:移調列表中的數據行
196465702|91017022|['95592022', '96094942', '100920382']|91048702
,我會在下面轉換數據:
196465702|91017022|95592022|91048702
196465702|91017022|96094942|91048702
196465702|91017022|100920382|91048702
到目前爲止,我已經嘗試寫這個。不確定這是否是一種準確和最佳的方式。而且,如果在第4列和第5列等列表中存在列表,則爲每列循環並返回而變得棘手。
import csv
with open('sample.out','r') as x:
f = csv.reader(x,delimiter='|')
for row in f:
s = row[2].translate(None,"'")
#print s.split(',')
for t in s.split(','):
print row[0]+'|'+row[1]+'|'+t.translate(None,"[None]")+'|'+row[3].translate(None,"None")
有沒有更好的方法來寫這個?此外,如果數據列有少量列,是否有更好的方法來識別和轉置行並將其餘的數據連接回來?
感謝literal_eval。它非常直觀,而且更加緊湊。另外,如果我要添加更多列的列表值,這是好的嗎? 'x =「196465702 | 91017022 | ['95592022','96094942','100920382'] | 91048702 | ['x','y']」 from ast import literal_eval a,b,c,d,e = x.split(「|」) c = literal_eval(c) e = literal_eval(e) for cc in c: for ee in: print「{} | {} | {} | {} | {}「。格式(a,b,cc,d,ee)' – user3327034
@ user3327034你有這個想法:)多數民衆贊成在正確:) – thefourtheye
一個相關的問題:如果'數據'是一個列表。 'a,b,c,d = t [0],t [1],t [2],t [3] c = literal_eval(c)' 這將不能解析 – user3327034