将CSV行解析为列,每行中的第一个条目作为每列中的第一个条目

2024-09-30 16:28:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,我需要更改,以便我可以创建一个输入文件。将数据设置为keyname,然后设置如下数据:

allendata,test@test.com,test1@test.com  
allendata2,test1@test.com,test@test.com,test3@test.com

我需要格式化输出,以便最终

allendata,test@test.com
allendata,test1@test.com
allendata2,test1@test.com
allendata2,test@test.com
allendata3,test3@test.com

大约有1800行这样的代码,所以在解析完之后,我会得到大约30000行代码。你知道吗

我将采用任何可能的方法,最好使用bash或python。你知道吗

谢谢你, 艾伦


Tags: 文件csv数据方法代码testcombash
2条回答

您可以使用awk这样做:

$ awk -F, '{for(i=2;i<=NF;i++) print $1","$i}' file > new_file
$ cat new_file
allendata,test@test.com
allendata,test1@test.com  
allendata2,test1@test.com
allendata2,test@test.com
allendata2,test3@test.com

这应该能奏效

fIn = open('testIn.txt', 'r')
fOut = open('testOut.txt','w')

for line in fIn:
    data = line.split(',')
    name = data[0]
    for address in data[1:]:
        fOut.write(name + ',' + address + '\n')

fIn.close()
fOut.close()

'文本输入.txt'

allendata,test@test.com,test1@test.com  
allendata2,test1@test.com,test@test.com,test3@test.com

'测试输出.txt'

allendata,test@test.com
allendata,test1@test.com    
allendata2,test1@test.com
allendata2,test@test.com
allendata2,test3@test.com

相关问题 更多 >