其實,恕我直言,你可以簡單地使用json.loads
,並告訴用戶提供一個json,你的程序將會更加穩定/可用(即用戶不需要事先知道蟒蛇,但簡單的JSON這是一個標準格式)。
與問題列表對應的json基本上與您提供的幾乎相同(引號應該是雙引號,而None應該爲null)。
前
import json
json.loads('[["", "X", "O"], ["X", "O", ""], ["X", "", "X"]]')
# [[u'', u'X', u'O'], [u'X', u'O', u''], [u'X', u'', u'X']]
json.loads('[[null, 1, ""], [null, null, 0]]')
# [[None, 1, u''], [None, None, 0]]
如果你知道你沒有瘋狂的值(與'
內鍵(如「德州撲克」)或鍵包含None
(如「達能」))那麼你可以做基本的預處理處理前手的鍵(如果你不希望強制簡單的報價)
例如:
def parse_input_to_list(input):
input = input.replace("'", '"').replace('None', 'null')
return json.loads(input)
parse_input_to_list("[['', 'X', 'O'], ['X', 'O', ''], ['X', '', 'X']]")
# [[u'', u'X', u'O'], [u'X', u'O', u''], [u'X', u'', u'X']] << the input you provided
parse_input_to_list("[['null', 1, ''], [None, None, 0]]")
# [[u'null', 1, u''], [None, None, 0]]
parse_input_to_list('[[null, 1, ""], [null, null, 0]]')
# [[None, 1, u''], [None, None, 0]]
如果輸入提供是另一個程序的輸出,然後是json.dumps
用於數據交換的其他程序的輸出(這正是Json所做的)。你完成了。
如果絕對沒有使用Json的方法,那麼你可以使用@alsetru的ast解決方案,它的工作正常。
我認爲你正在尋找['ast.literal_eval'](https://docs.python.org/3.4/library/ast.html#ast.literal_eval) – inspectorG4dget
這對用戶來說不是更容易嗎?在「XO」,「XO」,「X X」等單獨的輸入中輸入行?然後,您可以創建每個字符串的'list(s)'並將其附加到行列表中。 – pepr