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條經驗 獲得超4個贊
我實際上可能會使用涉及拆分或正則表達式的東西來進行一些錯誤檢查和安全性 --- 以確保輸入中沒有隱藏任何惡意內容。但是你可以做這樣的事情。
我假設你在一個字符串變量中有你的文本行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]
添加回答
舉報