Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 拆分带分隔符的文件并存储到新列中_Python_Split - Fatal编程技术网

Python 拆分带分隔符的文件并存储到新列中

Python 拆分带分隔符的文件并存储到新列中,python,split,Python,Split,我正在尝试分割csv文件。读取分隔文件后,我想进一步拆分所需的列。我的示例代码: 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

我正在尝试分割csv文件。读取分隔文件后,我想进一步拆分所需的列。我的示例代码:

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]所示。有没有更好的分割方法?

你已经差不多做到了!
new=row[4]后面还有几行。只需拆分(“,”

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))

谢谢你的回答。我有一个疑问,可能有n个新列,例如[1,2,3,4]或[1,2,3,4,5,6,7]等。我们可以为多个列修复吗?还有一件事,现在的代码给出了t倍的重复输出。更新它以查找最长的一个,因为这似乎是您想要的。感谢bbil的帮助:)。。我们可以将连接的行存储到csv文件中吗?python csv的文档很棒。它就像
w=csv.writer(openfile,delimiter='|')一样简单;w、 writerow(newrow)
那么子列最多的行总是第一行?否则,在处理输入文件的其他行时,如何确定要添加的空白或空数。。。