根据csv中以空格分隔的值编写新行

时间:2019-07-01 16:18:44

标签: python csv

我有一个csv文件,如下所示:

column1 column2   column3                        
  a       b       value1 value2 value3
  a       z       value4 value5 value6
  s       t       value7  

我想用空格分隔'column3',以便该列只有一个值。该行的其余部分将重复。 这是我想获取的输出示例:

column1 column2    column3  
  a       b        value1 
  a       b        value2 
  a       b        value3

请注意,我找到了类似问题的答案,但使用了我不想使用的熊猫。

任何解决方案都会有所帮助。

谢谢

2 个答案:

答案 0 :(得分:0)

如果您真的想“手动”执行操作,则可以按column3按空格分割,并为每个值创建行,并使用相同的column1column2值。

示例:


csv_text = """
column1,column2,column3                        
a,b,value1 value2 value3
a,z,value4 value5 value6
s,t,value7
"""

result = ["column1,column2,column3"]
for line in csv_text.splitlines(keepends=False)[2:]:
    col1, col2, col3 = line.split(",")
    for val in col3.split(" "):
        result.append(",".join((col1, col2, val)))


print("\n".join(result))

输出:

column1,column2,column3
a,b,value1
a,b,value2
a,b,value3
a,z,value4
a,z,value5
a,z,value6
s,t,value7

(您当然可以将其写入文件或其他所需的文件,这就是循环的主体)

答案 1 :(得分:0)

使用csv模块。

例如:

import csv

data = []
with open(filename) as csvfile:              #Read SRC
    reader = csv.reader(csvfile)   
    data.append(next(reader))   #Get header
    for row in reader:          #Iterate each line
        temp = []               #Temp list
        for i in row[-1].strip().split():
            temp.append(row[:-1] + [i])
        data.extend(temp)

with open(filename2, "w", newline='') as outfile:   #Write file
    writer = csv.writer(outfile)
    writer.writerows(data)