Как преобразовать строку в список - PullRequest
1 голос
/ 26 сентября 2019

Я хочу преобразовать нижнюю строку в список:

OK      DiskDrive       SDX  SAMSUNG MZNLN256HMHQ-000H1       SCSI\DIS...

Мой вывод должен выглядеть следующим образом: ['OK', 'DiskDrive', 'SDX SAMSUNG MZNLN256HMHQ-000H1', 'SCSI\DIS...']

Я попробовал это и не смог получить то, что хотел:

List = re.sub("(\w+\s{0,2}+\w)", " ", line).split()

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Если я правильно понимаю, вы хотите разделить более чем на 2 пробела подряд.Для этого вы можете использовать re собственный split вместо того, чтобы иметь дело с sub.Способ указать более 2 с помощью {3,}, что означает от 3 до бесконечности :

import re

s = "OK      DiskDrive       SDX  SAMSUNG MZNLN256HMHQ-000H1       SCSI\DIS"

print(re.split("\s{3,}", s))

Дает:

['OK', 'DiskDrive', 'SDX  SAMSUNG MZNLN256HMHQ-000H1', 'SCSI\\DIS']
0 голосов
/ 26 сентября 2019

Вы можете сделать это с помощью встроенного строкового метода split, отметив, что вы хотите разделить только эти большие пробелы:

final_list = [l.strip() for l in my_line.split('   ') if l is not '']
# ['OK', 'DiskDrive', 'SDX  SAMSUNG MZNLN256HMHQ-000H1', 'SCSI\\DIS...']

Что if l is not '' просто гарантируетвы не получите пустых строк в вашем окончательном списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...