Как я могу разделить список в Python, чтобы получить новый список с элементами слева от разделителя, а не справа - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу разделить этот список Python (originalList):

['"car_type":"STANDARD","price":725842', 
'"car_type":"LUXURY","price":565853', 
'"car_type":"PEOPLE_CARRIER","price":239081', 
'"car_type":"LUXURY_PEOPLE_CARRIER","price":661624', 
'"car_type":"MINIBUS","price":654172']

, чтобы получить этот список (PricesList):

[725842, 565853, 239081, 661624, 654172]

Я попытался эту строку кода ниже, чтобы разделитьсписок с именем originalList:

pricesList = [i.split("price:")[0] for i in originalList]

Результатом является список с таким же количеством элементов, но каждый элемент содержит только тип car_type, короче говоря, разделение удалило все слева от разделителя.Как я могу изменить свой код выше или даже заменить, чтобы получить в новом списке элементы со значениями слева от разделителя и все справа удалены?

Ответы [ 5 ]

0 голосов
/ 13 сентября 2018

Решение

Если вы измените на .split(':'), вы можете просто взять элемент [-1], который будет представлять числа в конце

lista = [ 
    '"car_type":"STANDARD","price":725842', 
    '"car_type":"LUXURY","price":565853', 
    '"car_type":"PEOPLE_CARRIER","price":239081', 
    '"car_type":"LUXURY_PEOPLE_CARRIER","price":661624', 
    '"car_type":"MINIBUS","price":654172'
]

new_lista = []

for i in range(len(lista)):
    lista[i] = lista[i].split(':')
    new_lista.append(lista[i][-1])

print(new_lista)

выход

(xenial)vash@localhost:~/python$ python3.7 split.py 
['725842', '565853', '239081', '661624', '654172']
0 голосов
/ 13 сентября 2018

Еще один способ сделать это:

PricesList = [int (originalList [i] .split (",") [1] .split (":") [1]) для i в диапазоне (0, len (l1))]]

0 голосов
/ 13 сентября 2018

schwobaseggl ответ хорош, вот возможная альтернатива, использующая библиотеку json (я полагаю, оригинальный список происходит из обработки json)

import json
list(map(lambda x:json.loads('{'+x+'}')['price'],originalList))
0 голосов
/ 13 сентября 2018

Вы можете попробовать:

import json

n = ['"car_type":"STANDARD","price":725842',
'"car_type":"LUXURY","price":565853',
'"car_type":"PEOPLE_CARRIER","price":239081',
'"car_type":"LUXURY_PEOPLE_CARRIER","price":661624',
'"car_type":"MINIBUS","price":654172']

print [json.loads("{"+str(i)+"}")["price"] for i in n]
0 голосов
/ 13 сентября 2018

Вы забываете двойные кавычки ", которые являются частью вашего разделителя, затем выбираете неправильный индекс (0), равный перед разделением, и, наконец, вы не преобразуетесь в int. Вы можете сделать следующее, чтобы получить желаемый результат:

>>> [int(i.split('"price":')[-1]) for i in originalList]
[725842, 565853, 239081, 661624, 654172]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...