【问题标题】:Python convert string to list [closed]Python将字符串转换为列表[关闭]
【发布时间】:2016-08-06 18:22:45
【问题描述】:

我们如何转换

['[0.0034596999 0.0034775001 0.0010091923]']


[[0.0034596999 0.0034775001 0.0010091923]]

不带引号。我尝试使用 eval、list、tuple、replace 和 s.strip(),但似乎没有任何效果。谁能帮忙解决这个问题

【问题讨论】:

  • 输入是字符串还是包含字符串的列表?你的意思是结果是一个没有单引号的字符串,或者结果是一个列表,其中包含一个包含浮点值的列表,还是其他?如果是第一个,只需使用 replace() 方法删除所有引号。如果是第二个,请意识到列表的通常打印包括值之间的逗号。
  • 数据的来源是什么?不如你在那儿修好,而不是以后再修?
  • 是字符串还是列表?
  • 你的意思是把它从包含字符串的列表转换为包含列表的列表还是从字符串转换为字符串?凭借近距离投票的力量,我宣布这个问题不清楚。学习How to Ask
  • 我尝试替换为 testX2=[testX1.replace(" ' ","")] 但答案又是 ['[0.0034596999 0.0034775001 0.0010091923]'] 。我必须将它传递给 numpy 所以我需要类似 [[0.0034596999 0.0034775001 0.0010091923]]

标签: python


【解决方案1】:

使用replaceeval

>>> x = ['[0.0034596999 0.0034775001 0.0010091923]']
>>> x = [eval(x[0].replace(' ',','))]
>>> x
[[0.0034596999, 0.0034775001, 0.0010091923]]

当然你可以简单地将它转换成numpy数组。

【讨论】:

    【解决方案2】:

    使用 .split() 和 .replace():

    b = ['[0.0034596999 0.0034775001 0.0010091923]']
    b = b[0].split(' ')
    a = array([[float(x.replace('[','').replace(']','')) for x in b]])
    print a
    [[ 0.0034597   0.0034775   0.00100919]]
    

    如果你想要一个列表,不要使用 array()。

    【讨论】:

      【解决方案3】:

      eval 失败的原因是因为您认为是字符串的字符串不是有效的列表表示形式 - 它不包含逗号。

      您可以通过使用方括号将其转换为真实列表,将剩余的字符串拆分为表示数字的单独字符串,并最终将每个这样的字符串转换为数字。代码如下:

      data = ['[0.0034596999 0.0034775001 0.0010091923]']
      
      s = data[0]
      for ch in "[]":  # remove barckets
          s = s.replace(ch, '')
      
      # splitting and converting to a list of floats
      lst = [float(x) for x in s.split()]
      

      【讨论】:

        【解决方案4】:
        lst = ['[0.0034596999 0.0034775001 0.0010091923]']
        item = ''.join(lst)
        final_str = "[" + item + "]"
        print (final_str)
        

        【讨论】:

        • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
        猜你喜欢
        • 2022-01-03
        • 1970-01-01
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-21
        • 2020-04-10
        • 1970-01-01
        相关资源
        最近更新 更多