【发布时间】:2018-10-10 20:30:12
【问题描述】:
我需要找到并写入下一个空白单元格。
import csv
with open(r'C:\\filepath\file.txt', 'r') as input_file:
reader = csv.reader(input_file)
with open (r'C:\filepath\file.csv', 'a', newline = '') as output_file:
writer = csv.writer(output_file)
for row in reader:
content = [i.split('~') for i in row]
for row1 in content:
con = [len(k.split('*')) for k in row1]
conn = [m.split('*') for m in row1]
for b in conn:
if con[0] > 4:
if (b[0] == 'NM1' and b[1] == '82' and b[2] == '1' ):
writer.writerow([b[3]] + [b[4]])
print ( b[3] + b[4] )
elif (b[0] == 'GS' ):
writer.writerow(['','','',b[2]])
print(b[2])
寻求获得如上图所示的输出。现在在第一行中只有“App1”正在打印,然后在第二行中打印名称等。我正在使用的输入文件如下所示。 :
ISA*16* 00 0*T*>~
GS*IN*APP1*0999~
HPT*1*2~ SE*21*0001~
GE*1*145~
NM1*82*1*Tiger1a*Test1*K****~
NM1*82*1*Lion1a*Test2*K****~
NM1*82*1*Elephant1a*Test3*K****~
ISA*16* 00 0*T*>~
GS*IN*APP2*0999~
HPT*1*2~ SE*21*0001~
GE*1*145~
NM1*82*1*Tiger1a*Test4*K****~
ISA*16* 00 0*T*>~
GS*IN*APP1*0999~
HPT*1*2~
SE*21*0001~
GE*1*145~
NM1*82*1*Tiger1a*Test4*K****~
NM1*82*1*Lion1a*Test5*K****~
NM1*82*1*Elephant1a*Test6*K****~
ISA*16* 00 0*T*>~
GS*IN*APP10999~
HPT*1*2~
SE*21*0001~
GE*1*145~
NM1*82*1*Tiger1a*Test7*K****~
[![在此处输入图片描述][2]][2]
【问题讨论】:
-
由于格式的原因,很难说出您到底在问什么。能不能稍微清理一下,让你的输入输出更清晰?
-
@Chris cmets 删除所有格式。您可以改为编辑您的问题。
-
您提到的(相当奇怪的)输入是原始 csv 文件的产物吗?还是
~和*分离的数据是您必须使用的原始数据?对于前者,您可以使用例如pandas以更有效的方式解析您的输入。
标签: python python-3.x csv