[英]Python: Find all integers inside string and store in list as an integer
[英]Change string to integer in all lists inside a list using Python
我懂了:
X = [['0.4,0,6'],['0.2,0,3'],['0.1,0,8']]
我想實現這一目標:
X = [[0.4,0,6],[0.2,0,3],[0.1,0,8]]
我需要進行更改,因為它導致我發生ValueError:
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: invalid literal for float(): 0.1,0,8
有誰知道如何進行更改?
這樣做可以保留數據的float / int特征:
import ast
X = [['0.4,0,6'],['0.2,0,3'],['0.1,0,8']]
print([list(ast.literal_eval(e[0])) for e in X])
結果:
[[0.4, 0, 6], [0.2, 0, 3], [0.1, 0, 8]]
每個列表只有一個元素,其中包含一個元組。 在sole元素上使用ast.literal_eval
返回一個tuple
,轉換為list
您想要的內容。
這些子列表中有字符串,這使它有些混亂。 您需要先將它們拆分,然后再將每個項目轉換為float
:
>>> [[float(i) for i in lst[0].split(',')] for lst in X]
[[0.4, 0.0, 6.0], [0.2, 0.0, 3.0], [0.1, 0.0, 8.0]]
您可以使用eval()
將它們從字符串轉換為元組,並使用list()
創建元組列表:
a = [['0.4,0,6'],['0.2,0,3'],['0.1,0,8']]
b = []
for x in a:
b.append(list(eval(x[0])))
您可以使用ast.literal_eval
:
import ast
X = [['0.4,0,6'],['0.2,0,3'],['0.1,0,8']]
l = [list(ast.literal_eval(i[0])) for i in X]
輸出:
>>> l
[[0.4, 0, 6], [0.2, 0, 3], [0.1, 0, 8]]
為了避免文本的脆弱解析和危險的eval()
,可以使用ast.literal_eval()
:
>>> X = [['0.4,0,6'],['0.2,0,3'],['0.1,0,8']]
>>> import ast
>>> X=[ast.literal_eval(i[0]) for i in X]
>>> X
[(0.4, 0, 6), (0.2, 0, 3), (0.1, 0, 8)]
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.