拆分分隔文件并存储到新列中

时间:2015-06-09 13:12:12

标签: python split

我正在尝试拆分csv文件。阅读分隔文件后,我想拆分所需的列furthur。我的示例代码:

import csv
sample = open('~/sample.txt')
adr = csv.reader(sample, delimiter='|')
for row in adr:
    a = row[0]
    b = row[1]
    c = row[2]
    d = row [3]
    new=""
    new = row[4].split(",")
    for row1 in new:
        print row1

sample.txt文件包含:

aa|bb|cc|dd|1,2,3,4|xx
ab|ax|am|ef|1,5,6|jk
cx|kd|rd|j|1,9|k

以上代码产生的输出为:

[1,2,3,4]
[1,5,6]
[1,9]

我正在尝试进一步拆分新列并使用拆分输出进行比较。例如,分割所需的输出将是:

aa|bb|cc|dd|1|2|3|4|xx
ab|ax|am|ef|1|5|6| |jk
cx|kd|rd|j|1|9| | |k

另外我想存储新列的多个空白或NULL值,如上例[1,2,3,4],[1,5,6]所示。是否有更好的分裂方式?

1 个答案:

答案 0 :(得分:2)

你已经在那里了!完全需要new = row[4].split(",")之后的几行。

for i in range(len(new), 4):
    new.append('')
newrow = row[0:4] + new + row[5:]
print('|'.join(newrow))

编辑2:以最简单的方式解决您的评论,只需循环两遍,第一次寻找最长的“子阵列”。 Re:多次打印,你可能会将代码复制到错误的位置/缩进处并将其放入循环中。

完整代码:

import csv
sample = open('~/sample.txt')
adr = csv.reader(sample, delimiter='|')
longest = 0
for row in adr:
    curLen = len(row[4].split(','))
    if curLen > longest:
        longest = curLen

sample.seek(0)
for row in adr:
    new = row[4].split(",")
    for i in range(len(new), longest):
        new.append(' ')
    newrow = row[0:4] + new + row[5:]
    print('|'.join(newrow))