3 回答
TA贡献1865条经验 获得超7个赞
你可以使用一个非常幼稚的正则表达式:
import numpy as np
import re
nums = map(int, re.findall(r'\d+', 'test: [1, 50, 200]'))
print(np.array([n for n in nums]))
# [ 1 50 200]
另一种选择是使用正则表达式来提取整个列表,然后使用literal_eval:
import numpy as np
import re
from ast import literal_eval
li = re.search(r'(\[.*\])', 'test: [1, 50, 200]').group()
print(np.array(literal_eval(li)))
# [ 1 50 200]
TA贡献1872条经验 获得超3个赞
我实际上可能会使用涉及拆分或正则表达式的东西来进行一些错误检查和安全性 --- 以确保输入中没有隐藏任何恶意内容。但是你可以做这样的事情。
我假设你在一个字符串变量中有你的文本行line。然后你可以做
from ast import literal_eval
line = "test: [1, 50, 200]" # or whatever your line is
array = literal_eval(line.partition(":")[2].strip())
但要小心,因为eval在不确定的输入上运行是危险的。
TA贡献1786条经验 获得超11个赞
ast.literal_eval 给出一种解决方案:
import ast
s = 'test: [1, 50, 200]'
ast.literal_eval(s.split(':')[1].strip())
#evaluates to [1, 50, 200]
添加回答
举报