是否可以删除字符串并仅包含列表
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,
]
答案 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]