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

如何从python列表中删除字符串,python,string,list,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, ] 这有什么用?它将data中的每个元素(x)拆分为逗号,从中挑选出每个单独的标记(e),并将它们放入变量(out.append)

是否可以删除字符串并只保留列表

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,
]
这有什么用?它将
data
中的每个元素(
x
)拆分为逗号,从中挑选出每个单独的标记(
e
),并将它们放入变量(
out.append

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

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

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


并将数组添加到一起

,因为列表中的每个字符串都有一个尾随逗号,您只需将其重新组合为单个字符串,然后用逗号再次拆分即可。为了获得结果列表中的实际数字项,可以执行以下操作:

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]

您尝试了什么,遇到了什么问题?
data
中的列表格式不正确。您是如何获得初始数据结构的?我尝试了数据[1]。strip(“”)不起作用-不确定可以使用什么put=open(data.txt,'r')data=input.read().splitlines()
words=','.join(data)。在修复
数据后拆分(',')
(这是一种懒散的方法——它在以分隔的大字符串上创建,然后在处拆分,-效果不如发布的答案)谢谢你的帮助,但是我得到了这个'50''鸟''玉米''105.4''75''猫''肉''10.3''100''狗''蛋''1000.5''你的意思是你想把字符串中的数字转换成数字吗?谢谢你的帮助,但是这是在“,”上拆分数据,但我只是想删除这个包裹“
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
str.split(",")
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]