Мне нужно разделить значение в переменной

Мне нужно разделить путь, определенный в приведенном ниже коде, следующим образом:

k[0] = /dev/mapper/centos-root
k[1] = 52403200
k[2] = 14460252 an so on.

Что я пробовал? Я пытался использовать функцию разделения, но в настоящее время она принимает k[0] = / также я попытался передать его в список, где весь контекст представлен как одно значение

command = ("df -P | egrep '([20][0-9]|100)%' |  awk '{print}'|sed -e 's/ / : /g'")
command_execute = (stdin, stdout, stderr) = ssh.exec_command(command)
read_contents = stdout.read().decode("utf-8")
read_contents
'/dev/mapper/centos-root :  :  :  : 52403200 : 14460252 :  : 37942948 :  :  :  :  :  : 28% : /\n'
k=read_contents[0]
k
'/'
k=read_contents[1]
k
'd'
k.split(" ")
['d']
m =k.split(":")
m
['d']
s = [read_contents]
s
['/dev/mapper/centos-root :  :  :  : 52403200 : 14460252 :  : 37942948 :  :  :  :  :  : 28% : /\n']
s[0]
'/dev/mapper/centos-root :  :  :  : 52403200 : 14460252 :  : 37942948 :  :  :  :  :  : 28% : /\n'
s[1]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: list index out of range
s[0]
'/dev/mapper/centos-root :  :  :  : 52403200 : 14460252 :  : 37942948 :  :  :  :  :  : 28% : /\n'

k[0] = /dev/mapper/centos-root
k[1] = 52403200
k[2] = 14460252 an so on.
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
47
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы хотите избавиться от строк с пробелами при разделении на :

In [20]: read_contents = '/dev/mapper/centos-root :  :  :  : 52403200 : 14460252 :  : 37942948 :  :  :  :  :  : 28% : /\n'                                                                                                 
#Get rid of empty strings, and strip leading and trailing whitespaces around the rest of the words
In [21]: contents = [content.strip() for content in read_contents.split(':') if content.strip()]                                                                                                                           

In [22]: contents                                                                                                                                                                                                          
Out[22]: ['/dev/mapper/centos-root', '52403200', '14460252', '37942948', '28%', '/']

In [23]: for item in contents: 
    ...:     print(item) 
    ...:                                                                                                                                                                                                                   
/dev/mapper/centos-root
52403200
14460252
37942948
28%
/

Другой вариант — использовать функцию filter для выбора по ожидаемой длине чисел.

read_contents = '/dev/mapper/centos-root :  :  :  : 52403200 : 14460252 :  : 3794...: 2948 :  :  :  :  :  : 28% : /\n'
k = list(filter(lambda x: len(x)>5, read_contents.split(':')))

Выход:

print(k)
['/dev/mapper/centos-root ', ' 52403200 ', ' 14460252 ', ' 3794...', ' 2948 ']

Хорошее решение, но не может быть реализовано, так как длина может время от времени меняться

Sahil Manoharan 31.05.2019 12:32
import re
a='/dev/mapper/centos-root :52403200 : 14460252 :  : 37942948 :  :  :  :  :  : 28% : /\n'
print(re.split(r'(?:\s+:)+',a))

Другие вопросы по теме