gpt4 book ai didi

python - 在 python 中使用 ast_literal_eval

转载 作者:行者123 更新时间:2023-12-01 22:26:09 26 4
gpt4 key购买 nike

我有一个列表,项目是字符串,但是通过一些操作我得到了列表,因为字符串项目包含在额外的“'string'” 中。如何摆脱它。

我的代码示例是

 import ast
d = ["'WORKSHOP'", "'KIDS'", "'EXHIBITION'", "'FANTASY'", "'FESTIVAL'"]
result = ast.literal_eval(d)
ValueError: malformed node or string: ["'WORKSHOP'", "'KIDS'", "'EXHIBITION'", "'FANTASY'", "'FESTIVAL'"]

我希望输出为:

result = ['WORKSHOP', 'KIDS', 'EXHIBITION', 'FANTASY', 'FESTIVAL']

对于整数:

res = [123, 345, 566, 78]

最佳答案

啊...你知道吗,你正在尝试使用 ast.literal_eval()在一个列表上。所以试试这个:

>>> import ast
>>> d = ["'WORKSHOP'", "'KIDS'", "'EXHIBITION'", "'FANTASY'", "'FESTIVAL'"]
>>> result = [ast.literal_eval(i) for i in d]
>>> result
['WORKSHOP', 'KIDS', 'EXHIBITION', 'FANTASY', 'FESTIVAL']
>>>

或者使用 map() :

>>> import ast
>>> d = ["'WORKSHOP'", "'KIDS'", "'EXHIBITION'", "'FANTASY'", "'FESTIVAL'"]
>>> result = map(ast.literal_eval, d)
>>> result
['WORKSHOP', 'KIDS', 'EXHIBITION', 'FANTASY', 'FESTIVAL']
>>>

记住在 Python 3 上它会返回一个 map对象,将其隐藏到列表中只需使用 list(map(ast.literal_eval, d)) .


解决这个问题的另一种方法是简单地删除字符串中的第一个字符和最后一个字符,因为它们已经是字符串对象:

>>> d = ["'WORKSHOP'", "'KIDS'", "'EXHIBITION'", "'FANTASY'", "'FESTIVAL'"]
>>> [i[1:-1] for i in d]
['WORKSHOP', 'KIDS', 'EXHIBITION', 'FANTASY', 'FESTIVAL']
>>> list(map(lambda x: x[1:-1], d))
['WORKSHOP', 'KIDS', 'EXHIBITION', 'FANTASY', 'FESTIVAL']
>>>

关于python - 在 python 中使用 ast_literal_eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34127329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com