Как разделить значение столбца с разделителями точкой с запятой на строки в Python? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть электронная таблица со следующими данными.Последний столбец содержит значение, разделенное точкой с запятой, которое я хочу транспонировать в несколько строк, дублируя значения для первых трех столбцов.

   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

Как мне это сделать?

1 Ответ

0 голосов
/ 23 сентября 2019

Я просто перейду к тому, что вы предоставили.

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...