如何从列表python中删除字符串

时间:2019-02-25 21:03:28

标签: python string list

是否可以删除字符串并仅包含列表

data = [
"50,bird,corn,105.4,"
"75,cat,meat,10.3,"
"100,dog,eggs,1000.5,"
]

希望它看起来像这样

data = [
50,'bird','corn',105.4,
75,'cat','meat',10.3,
100,'dog','eggs',1000.5,
]

4 个答案:

答案 0 :(得分:5)

out = []
for x in data:
  for e in x.split(","):
    out.append(e)

这是做什么的?它将逗号中的x中的每个元素(data)分开,挑选出每个单独的标记(e),并将它们放入变量(out.append)中。

答案 1 :(得分:4)

new_data = []
for i in data:
    new_data.extend(i.split(','))
new_data

请注意可能存在问题(例如,最后一个逗号后面没有任何逗号,因此它会生成一个''字符串作为新数组中的最后一个元素)。

如果您想将数字专门转换为整数和浮点数,也许有一种更优雅的方法,但这会起作用(如果您有多余的逗号,它也会删除空单元格):

new_data = []
for i in data:
    strings = i.split(',')
    for s in strings:
        if (len(s)>0):
            try:
                num = int(s)
            except ValueError:
                try:
                    num = float(s)
                except ValueError:
                    num = s
            new_data.append(num)
new_data

答案 2 :(得分:0)

分割每个字符串(这将为您提供每个字符串中“,”之间的分段数组):

str.split(",")

并将数组添加在一起

答案 3 :(得分:0)

由于列表中的每个字符串都有一个结尾的逗号,因此您可以简单地将其作为单个字符串放回去,然后再用逗号将其分开。为了在结果列表中获取实际的数字项,您可以执行以下操作:

import re
data = [
    "50,bird,corn,105.4,"
    "75,cat,meat,10.3,"
    "100,dog,eggs,1000.5,"
]
numeric = re.compile("-?\d+[\.]\d*$")
data = [ eval(s) if numeric.match(s) else s for s in "".join(data).split(",")][:-1]

data # [50, 'bird', 'corn', 105.4, 75, 'cat', 'meat', 10.3, 100, 'dog', 'eggs', 1000.5]