在使用numpy.array(eval(str_arr))时,如果字符串中包含省略号...,会导致eval()函数无法正确解析字符串,从而无法将其转换为正确的数组。

为了解决这个问题,可以使用ast.literal_eval()函数来安全地解析字符串,并将其转换为正确的数组。ast.literal_eval()函数可以安全地解析字符串,而不会执行任意代码。

下面是一个示例代码,演示如何使用ast.literal_eval()函数来解决该问题:

import ast
import numpy as np

str_all = "[1, 2, ..., 10]"
str_arr = str_all.replace("...", "np.arange({}, {})".format(1, 11))
arr = np.array(ast.literal_eval(str_arr))

print(arr)

在这个示例中,我们首先使用str_all.replace("...", "np.arange({}, {})".format(1, 11))将省略号替换为np.arange(1, 11),然后使用ast.literal_eval()函数解析字符串,并将其转换为正确的数组。

输出结果为:

[ 1  2  3  4  5  6  7  8  9 10]

这样就成功地将包含省略号的字符串转换为了正确的数组

python36 当字符串str_all中含有省略号时使用numpyarraryevalstr_arr不能转成正确的数组怎样解决?

原文地址: https://www.cveoy.top/t/topic/iLvY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录