我有一个包含以下数据的电子表格。最后一列包含分号分隔的值,我想将其转换为多行,同时复制前三列的值。
A,B,C,1
D,E,F,1;2;3
G,H,I,1;2
我希望输出为:
A,B,C,1
D,E,F,1
D,E,F,2
D,E,F,3
G,H,I,1
G,H,I,2
我该怎么做?
我会按照你提供的内容去做。
my_str = """A,B,C,1
D,E,F,1;2;3
G,H,I,1;2"""
我首先根据换行符拆分“my_str”,然后使用分号 - 即,
my_list = [strn.split(';') for strn in my_str.split('\n')]
现在 my_list 看起来像,
[['A,B,C,1'], ['D,E,F,1', '2', '3'], ['G,H,I,1', '2']]
这可能不是最优雅的解决方案,
for i, sub_list in enumerate(my_list):
if len(sub_list) > 1:
for j in range(1, len(sub_list)):
my_list[i][j] = my_list[i][0][:-1] + my_list[i][j]
最后, my_list 将如下所示:
[['A,B,C,1'], ['D,E,F,1', 'D,E,F,2', 'D,E,F,3'], ['G,H,I,1', 'G,H,I,2']]
然后,只需将其打印出来。例如
for sub_list in my_list:
for strn in sub_list:
print(strn)
你得到想要的答案
A,B,C,1
D,E,F,1
D,E,F,2
D,E,F,3
G,H,I,1
G,H,I,2
编辑将此输出写入文件:
with open('new_test_file.txt', 'w') as f:
for sub_list in my_list:
for strn in sub_list:
f.write(strn+'\n')