Можно ли удалить строку и просто получить список
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, ]
Поскольку каждая строка в списке имеет запятую, вы можете просто собрать ее обратно в одну строку и снова разделить на запятые.Чтобы получить фактические числовые элементы в результирующем списке, вы можете сделать это:
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]
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(",")
и сложить массивы вместе
out = [] for x in data: for e in x.split(","): out.append(e)
Что это делает?Он разбивает каждый элемент (x) на data на запятой, выбирает каждый из этих отдельных токенов (e) и помещает их в переменную (out.append).
x
data
e
out.append