-2

我有一个包含以下数据的电子表格。最后一列包含分号分隔的值,我想将其转换为多行,同时复制前三列的值。

   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

我该怎么做?

4

1 回答 1

0

我会按照你提供的内容去做。

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')
于 2019-09-23T18:39:14.027 回答