如何从字符串中提取 int 值?
How do I extract int values from string?
你好,我有一个 list
这样的:
B=
["('33', '207')",
"('33', '408')",
"('33', '408')",
"('33', '408')",
"'NaN'",
"('33', '207')"]
我想要 return 一个整数数组,如下所示:
B1 =
[33, 207,
33, 408,
33, 408,
33, 408,
NaN, Nan,
33, 408]
我正在尝试将 regex
用作 B1[0]=re.findall(r'\d+', B[0])
只需使用拆分:
B1 = [(float(a[1]),float(a[-2])) for a in (b.split("'") for b in B)]
谢谢丹尼尔。不过,我也可以:
B= ["('31', '265')",
"('31', '265')",
"('31', '265')",
"('31', '265')",
"('31', '265')",
nan,
nan,
nan,
nan,
nan]
您可以使用 ast.literal_eval
将字符串转换为字符串数字元组,然后使用 numpy.array()
和 array.astype()
将元组转换为浮点数组,如果项目的类型是元组(使用 isinstance()
检查类型,否则重复该项目并转换为 float 类型):
>>> from ast import literal_eval
>>> import numpy as np
>>> np.array([np.array(i).astype(float) if isinstance(i,tuple) else np.repeat(np.array(i).astype(float),2) for i in map(literal_eval,B)])
array([[ 33., 207.],
[ 33., 408.],
[ 33., 408.],
[ 33., 408.],
[ nan, nan],
[ 33., 207.]])
你好,我有一个 list
这样的:
B=
["('33', '207')",
"('33', '408')",
"('33', '408')",
"('33', '408')",
"'NaN'",
"('33', '207')"]
我想要 return 一个整数数组,如下所示:
B1 =
[33, 207,
33, 408,
33, 408,
33, 408,
NaN, Nan,
33, 408]
我正在尝试将 regex
用作 B1[0]=re.findall(r'\d+', B[0])
只需使用拆分:
B1 = [(float(a[1]),float(a[-2])) for a in (b.split("'") for b in B)]
谢谢丹尼尔。不过,我也可以:
B= ["('31', '265')",
"('31', '265')",
"('31', '265')",
"('31', '265')",
"('31', '265')",
nan,
nan,
nan,
nan,
nan]
您可以使用 ast.literal_eval
将字符串转换为字符串数字元组,然后使用 numpy.array()
和 array.astype()
将元组转换为浮点数组,如果项目的类型是元组(使用 isinstance()
检查类型,否则重复该项目并转换为 float 类型):
>>> from ast import literal_eval
>>> import numpy as np
>>> np.array([np.array(i).astype(float) if isinstance(i,tuple) else np.repeat(np.array(i).astype(float),2) for i in map(literal_eval,B)])
array([[ 33., 207.],
[ 33., 408.],
[ 33., 408.],
[ 33., 408.],
[ nan, nan],
[ 33., 207.]])