如何在没有eval或ast.literal_eval的情况下解析字符串到列表

时间:2017-05-30 13:08:14

标签: python string list python-3.x

有没有办法在不使用Python中的listeval()的情况下将包含unicode字符串的列表转换为正确的ast.literal_eval()

例如:

"[u'hello', u'hi']"

['hello', 'hi']

2 个答案:

答案 0 :(得分:0)

这可能是你想要的吗?

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(',')]

答案 1 :(得分:0)

这取决于输入的格式:

  • 它只包含“字符串”
  • 如果字符串前面始终有u
  • 每个字符串都在单引号'
  • ,之前总是没有空格,但是之后总是没有空格。
  • []
  • 之前或之后没有空格

您可以简单地剥离左[u'和右'](为方便起见,我只是将其从第四个元素切割到第二个到最后一个元素),然后在', u'处拆分你做完了:

>>> s = "[u'hello', u'hi']"
>>> s[3:-2].split("', u'")
['hello', 'hi']