ast.literal_eval() 格式错误的节点或字符串,同时使用 array()s 列表转换字符串
ast.literal_eval() malformed node or string while converting a string with list of array()s
我有一个字符串,它是一个 numpy 数组列表。
字符串看起来像
k = '[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]'
当我做
ast.literal_eval(k)
我收到一条错误消息,指出格式错误的节点或字符串。
这里有什么问题?有没有更好的方法将其转换回列表?
感谢帮助!!
我不确定这是否是一个好方法。
from numpy import array
import ast
import re
k = '[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]'
val = re.findall(r"\((.*?)\)", k)
val = list(map(ast.literal_eval, val))
val = list(map(array, val))
print(val)
输出:
[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]
- 使用正则表达式提取
()
之间的内容
- 应用
ast.literal_eval
- 应用
np.array
The string or node provided may only consist of the following Python literal structures: strings, bytes, numbers, tuples, lists, dicts, sets, booleans, and None.
这里不能使用文字求值。首先找到这些字符串的生成位置,并在那里实施适当的序列化 - 例如使用 numpy.save
.
import numpy as np
array = np.array
k = '[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]'
k = eval(k)
print(f"k = {k}, type of k = {type(k)}")
print(type(k[0]))
输出:
k = [array([ 0, 269, 175, 377]), array([ 0, 56])], type of k = <class 'list'>
<class 'numpy.ndarray'>
我有一个字符串,它是一个 numpy 数组列表。 字符串看起来像
k = '[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]'
当我做
ast.literal_eval(k)
我收到一条错误消息,指出格式错误的节点或字符串。
这里有什么问题?有没有更好的方法将其转换回列表?
感谢帮助!!
我不确定这是否是一个好方法。
from numpy import array
import ast
import re
k = '[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]'
val = re.findall(r"\((.*?)\)", k)
val = list(map(ast.literal_eval, val))
val = list(map(array, val))
print(val)
输出:
[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]
- 使用正则表达式提取
()
之间的内容
- 应用
ast.literal_eval
- 应用
np.array
The string or node provided may only consist of the following Python literal structures: strings, bytes, numbers, tuples, lists, dicts, sets, booleans, and None.
这里不能使用文字求值。首先找到这些字符串的生成位置,并在那里实施适当的序列化 - 例如使用 numpy.save
.
import numpy as np
array = np.array
k = '[array([ 0, 269, 175, 377]), array([ 0, 56, 149, 163])]'
k = eval(k)
print(f"k = {k}, type of k = {type(k)}")
print(type(k[0]))
输出:
k = [array([ 0, 269, 175, 377]), array([ 0, 56])], type of k = <class 'list'>
<class 'numpy.ndarray'>