Игнорировать запятую в кавычках при использовании json.loads () / Python? [Дубликат]

1

в настоящее время работает с командой:

python foo.py "['A,B,C,D','A,B,C','A,B','A']"

И я хочу преобразовать его в фактический массив строк:

A[0] = 'A,B,C,D'
A[1] = 'A,B,C' 
A[2] = 'A,B' 
A[3] = 'A' 

На данный момент я пытаюсь использовать json.loads() и sys для чтения строки в объект или список.

Однако, похоже, что наличие одиночных кавычек вызывает следующую ошибку.

ValueError: No JSON object could be decoded

Тем не менее, без одиночных кавычек я заканчиваю массив:

B = ["A","B","C","D","A","B","C","A","B","A"]

Как заставить Python игнорировать внутренние запятые, отслеживая внешние запятые, чтобы создать массив строк, указанных в A показанных выше?

  • 1
    Ваш ввод не JSON, так что ... зачем использовать json.loads ?
  • 0
    Почему бы не использовать '["A,B,C,D","A,B,C","A,B","A"]' ?
Показать ещё 3 комментария
Теги:
python-2.7
sys

1 ответ

1

Вы можете использовать ast.literal_eval для...

Безопасно оценить узел выражения или строку, содержащую выражение Python. Представленная строка или узел могут состоять только из следующих литеральных структур Python: строки, байты, числа, кортежи, списки, dicts, sets, booleans и None.

>>> from ast import literal_eval
>>> literal_eval("['A,B,C,D','A,B,C','A,B','A']")
['A,B,C,D', 'A,B,C', 'A,B', 'A']
  • 1
    Спасибо! Оно работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню