我有一个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
请注意,我找到了类似问题的答案,但使用了我不想使用的熊猫。
任何解决方案都会有所帮助。
谢谢
答案 0 :(得分:0)
如果您真的想“手动”执行操作,则可以按column3
按空格分割,并为每个值创建行,并使用相同的column1
和column2
值。
示例:
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)