如何从字符串中提取 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.]])