拆分分隔文件并存储到新列中
Splitting a delimited file and storing into new column
我正在尝试拆分 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].split(",")
之后再多几行即可。
for i in range(len(new), 4):
new.append('')
newrow = row[0:4] + new + row[5:]
print('|'.join(newrow))
编辑 2:以最简单的方式解决您在下面的评论,只需循环两次,第一次寻找最长的 "subarray"。回复:打印额外的时间,您可能将代码复制到错误的 place/indentation 并使其进入循环。
完整代码:
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))
我正在尝试拆分 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].split(",")
之后再多几行即可。
for i in range(len(new), 4):
new.append('')
newrow = row[0:4] + new + row[5:]
print('|'.join(newrow))
编辑 2:以最简单的方式解决您在下面的评论,只需循环两次,第一次寻找最长的 "subarray"。回复:打印额外的时间,您可能将代码复制到错误的 place/indentation 并使其进入循环。
完整代码:
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))