Как разбить строку, содержащую аргументы командной строки

Как разделить строку -s -k "test_a or test_b" -m "not unstable" --results=/tmp/test-results --log-cli-level=INFO на

['-s', '-k', 'test_a or test_b', '-m', 'not unstable', '--results=/tmp/test-results', '--log-cli-level=INFO']

Похоже, после test_b отсутствует цитата

buran 23.12.2020 20:27

Откуда вы берете эту строку? Это похоже на аргументы командной строки. Это может быть проблема XY, поскольку есть несколько встроенных способов анализа аргументов командной строки.

Tomerikoo 23.12.2020 20:28
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
480
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я предполагаю, что вы пропустили добавление цитаты. Если вы хотите разделить с поведением оболочки, используйте shlex:

import shlex

s = '-s -k "test_a or test_b" -m "not unstable" --results=/tmp/test-results --log-cli-level=INFO'
print(shlex.split(s))
# ['-s', '-k', 'test_a or test_b', '-m', 'not unstable', '--results=/tmp/test-results', '--log-cli-level=INFO']
stackoverflow.com/a/899314/6045800
Tomerikoo 23.12.2020 20:31

@anonymous, рад, что помог! Также загляните в библиотеку argparse , если вы создаете инструмент командной строки — это очень удобно. Если мой ответ решит вашу проблему, нажмите на галочку, чтобы принять его. Вам также следует пометить этот вопрос как дубликат stackoverflow.com/a/899314/6045800. Счастливого Рождества, если вы его празднуете, счастливых праздников, если нет :) :)

Ben 23.12.2020 20:36

Если вы думаете, что это дубликат, то почему вы отвечаете? У вас достаточно представителей, чтобы закрыть вопросы, так что вам следует это сделать.

Tomerikoo 23.12.2020 20:40

@Tomerikoo, @anonymous — это новый пользователь, который просто пытается решить проблему. Я призываю их закрыть это как дубликат, но более того, я хочу, чтобы они получили ответ на свой вопрос, даже если это может быть не совсем эффективно, или они не знали, как спросить, или им нужно было искать дубликаты на сайте. .

Ben 23.12.2020 20:46

@anonymous , вам очень поможет чтение stackoverflow.com/help/how-to-ask . Получите лучшие ответы быстрее для вашего следующего вопроса :)

Ben 23.12.2020 20:48

Это нормально, что они новые и могут не найти вопрос. Но ты не новичок. Поэтому мне просто смешно предлагать пометить вопрос как дубликат внутри ответа. Весь смысл дубликатов в том, чтобы избежать повторения одних и тех же вопросов и ответов. Ваш ответ точно такой же, как ответ, указанный выше, где есть даже другой ответ ... Вы помогаете ОП, закрывая их вопрос как дубликат так же, как и отвечая ...

Tomerikoo 23.12.2020 21:37

Это справедливая точка зрения

Ben 23.12.2020 21:54

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