Возьмите определенную подстроку из строки в python

1

Как сохранить lst1 = [26.7,8.2,13.7,8.6,16] из Train_level1 в python?

Train_level1 = ['1_Rehana_Karim_F49_850_GL=26.7','43_G.M.Alauddin Azad_M42_940_GL=8.2','110_Ronojeet_Bishwash_M47_940_GL=13.7','112_Mustafizur_Rahman_M60_850_GL=8.6','123_Farida_Yeasmin_F55_940_GL=16']

Аналогично, как сохранить lst2 = [11.5,12.9,9.2] из Train_level2 в python?

Train_level2 = ['S140_M75_GL=11.5-850LEDFon_F=110.jpg', 'S85_F56_GL=12.9-940LEDFon_F=105.jpg', 'S108_M71_GL=9.2-850LEDFon_F=100.jpg']
Теги:
list
python-3.x

2 ответа

5
Лучший ответ

Для Train_level вам нужно получить номер после =, поэтому мы используем split() в списке строк, чтобы разделить его на символ = и получить вторую строку, которая находится в индексе 0:

lst1 = [float(train.split('=')[1]) for train in Train_level1]

Для Train_level2 это похоже, за исключением того, что нам нужно сделать два расщепления - сначала by = и получить вторую строку (индекс 1), а затем - и получить первую строку (индекс 0):

lst2 = [float(train.split('=')[1].split('-')[0]) for train in Train_level2]

Мы используем float() для результата, так как split возвращает строку, но вывод представляет собой список чисел, а не строк. float преобразует десятичную строку, содержащую число, в число с плавающей запятой.

2

Вы можете использовать регулярное выражение для анализа ваших номеров:

import re

Train_level1 = ['1_Rehana_Karim_F49_850_GL=26.7',
                '43_G.M.Alauddin Azad_M42_940_GL=8.2',  
                '110_Ronojeet_Bishwash_M47_940_GL=13.7',
                '112_Mustafizur_Rahman_M60_850_GL=8.6',
                '123_Farida_Yeasmin_F55_940_GL=16']

Train_level2 = ['S140_M75_GL=11.5-850LEDFon_F=110.jpg', 
                'S85_F56_GL=12.9-940LEDFon_F=105.jpg', 
                'S108_M71_GL=9.2-850LEDFon_F=100.jpg']


def parseIt(data):
    p1 = r"=(\d+\.?\d*)" # find '=' followed numbers followed by optional '.' + more numbers
    return [float(x[0]) for x in (re.findall(p1,y) for y in data) if x] 


print(parseIt(Train_level1))
print(parseIt(Train_level2))

Выход:

[26.7, 8.2, 13.7, 8.6, 16.0]
[11.5, 12.9, 9.2]

Список-comp и регулярное выражение идентичны, поэтому я создал для него функцию. Они применяют регулярное выражение к каждому элементу списка. У вас есть только один элемент =99.99 в списке, так что мы берем и переходим в поплавок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню