有沒有什麼辦法將Python包含unicode字符串的列表轉換爲正確的list
而不使用eval()
或ast.literal_eval()
?如何解析字符串列表沒有eval或ast.literal_eval
例如:
"[u'hello', u'hi']"
到
['hello', 'hi']
有沒有什麼辦法將Python包含unicode字符串的列表轉換爲正確的list
而不使用eval()
或ast.literal_eval()
?如何解析字符串列表沒有eval或ast.literal_eval
例如:
"[u'hello', u'hi']"
到
['hello', 'hi']
難道這是你在找什麼?
a = "[u'hello', u'hi']".translate(None, "[]u'' ")
a = a.split(',')
print(a) #['hello', 'hi']
好像當你在字符串有'u'
這樣你就可以去失敗:
a = "[u'hello', u'hi', u'uyou']".translate(None, "[]' ")
a = [item[1:] for item in a.split(',')]
問題可能與此 - OP有這個標記的Python 3.x,這意味着'str.translate'提供的示例將不起作用,如果碰巧有'['或']'(或空間等..)在弦中,你會失去他們...... –
這取決於你輸入的格式位:
u
,'
,
之前總是沒有空格,但是一個在之後。[
和]
你可以簡單地剝去留下[u'
和右']
(爲方便起見,我剛剛從第四個元素切它的倒數第二個元素),然後在', u'
分裂,就大功告成了:
>>> s = "[u'hello', u'hi']"
>>> s[3:-2].split("', u'")
['hello', 'hi']
你可以寫你自己吧解析器。如果你有關於列表結構的保證,這很簡單,但沒有令人信服的理由不使用'ast.literal_eval'。 –
你可以添加更多的上下文爲什麼'eval()'和'literal_eval()'不是一個選項? – alecxe