【问题标题】:How do I extract int values from string?如何从字符串中提取 int 值?
【发布时间】:2016-02-16 02:00:50
【问题描述】:

您好,我有一个这样的list

B=
["('33', '207')",
 "('33', '408')",
 "('33', '408')",
 "('33', '408')",
 "'NaN'",
 "('33', '207')"]

我想返回一个整数数组,如下所示:

B1 =
    [33, 207,
     33, 408,
     33, 408,
     33, 408,
     NaN, Nan,
     33, 408]

我正在尝试将regex 用作B1[0]=re.findall(r'\d+', B[0])

【问题讨论】:

  • NaN 是 IEEE 754 浮点数标准的一部分。因此,您不能在其中创建带有 NaN 值的 array of integer(好吧,在 python 中您可以,但它不会只是一个整数数组)

标签: python arrays regex list integer


【解决方案1】:

只需使用拆分:

B1 = [(float(a[1]),float(a[-2])) for a in (b.split("'") for b in B)]

【讨论】:

    【解决方案2】:

    谢谢丹尼尔。但是,我也可以:

    B= ["('31', '265')",
     "('31', '265')",
     "('31', '265')",
     "('31', '265')",
     "('31', '265')",
     nan,
     nan,
     nan,
     nan,
     nan]
    

    【讨论】:

      【解决方案3】:

      您可以使用ast.literal_eval 将字符串转换为字符串数字的元组,然后使用numpy.array()array.astype() 将元组转换为浮点数组,如果项目的类型是元组(使用@ 检查类型987654324@ 否则重复该项并转换为浮点型):

      >>> 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.]])
      

      【讨论】:

        猜你喜欢
        • 2018-05-13
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-05
        相关资源
        最近更新 更多