如何从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]