如何在csv单元格中拆分数据并创建新行

时间:2013-12-28 06:04:08

标签: python arrays csv dictionary split

我是Python的新手。我搜索了数据库,但没有找到我问题的确切答案。这是我的基本问题:

我有一个以下形式的csv文件:

Header1, Header2, Header3   
1, a, DF FD  
2, b, DD FD    

我需要以下面的形式写出csv:

Header1, Header2, Header3  
1, a, DF  
1, a, FD  
2, b, DD  
2, b, FD  

现在我在这里使用我的代码:


import csv  

with open('InputFile.csv', newline='') as f:  
    reader = csv.reader(f, delimiter = ',')  
    for row in reader:  
        if row[0] != '':  
            print(row)  

我正在使用印刷品来看看我拥有的东西。我现在的问题是如何在第三列中拆分空格分隔值并获得我想要实现的输出?我的实际文件更复杂,但我认为对此的回答将使我朝着正确的方向前进。

1 个答案:

答案 0 :(得分:1)

我认为以下是你的意思:

import csv  
import sys

# Index (starts at 0) of the column that needs to be split up
splitColIndex = 2

with open('InputFile.csv') as f:  
    reader = csv.reader(f, delimiter = ',')  
    for row in reader:

        # Get the element that needs splitting
        splitElem = row[splitColIndex]
        for subElem in splitElem.split():

            # Iterate over the row elements
            # (actually the indices)
            for idx in range(len(row)):

                # If the column doesn't need splitting, we
                # can just copy it, otherwise we need to use
                # one of the split up values
                if idx != splitColIndex:
                    elem = row[idx]
                else:
                    elem = subElem

                if idx > 0:
                    sys.stdout.write(",")
                sys.stdout.write(elem)

            sys.stdout.write("\n")

在这里,我使用split函数进行转换,例如"DF FD"列入[ "DF", "FD" ]列表。我还使用sys.stdout.write代替print来稍微控制输出的格式。