Как извлечь конкретную строку из предложения, присутствующего в любом конкретном индексе в списке в Python? - PullRequest
0 голосов
/ 18 декабря 2018
names=['alex','peter','sana','alice']

info=['alex is working on os_10 coolest one',
'peter is working on OS_9 which is not that cool', 
'sana is working on OS_7 which is quite old', 
'Thanos is also using os_10', 
'alice is fan of thanos so she also uses os_10']

# Я попробовал

 v=[]

    for name in names:
        a= [x for x in info if name in x]
        #print(a)
        v.append(a)

    print(v)

Первый Я сделал список, который содержит только информацию о человеке, чье имя находится в списке имен. Теперь я хочу o / p, как alex: os_10, peter: OS_9 и т. Д.

Ответы [ 4 ]

0 голосов
/ 18 декабря 2018

Просто для удовольствия, в данном конкретном случае, используйте слайс, чтобы не разбивать строку дважды.

a = ['Alex is working on OS_10', 'Peter is working on OS_8', 'Sana is working on OS_7']
data = [ ' '.join(line.split()[::4]) for line in a ]

print(data)
['Alex OS_10', 'Peter OS_8', 'Sana OS_7']

Вы можете адаптировать ломтик к вашим потребностям, зная, что он работает таким образом

a_list[start_index : end_index : step]

См. Это для получения дополнительной информации https://docs.python.org/2.3/whatsnew/section-slices.html

0 голосов
/ 18 декабря 2018

Вы можете Split текст и получить элементы Первый и Последний индекс.

Код:

a = ['Alex is working on OS_10', 'Peter is working on OS_8', 'Sana is working on OS_7']
print(*[f"{t.split()[0]} {t.split()[-1]}" for t in a], sep=',\n')

Выход:

Alex OS_10,
Peter OS_8,
Sana OS_7
0 голосов
/ 18 декабря 2018

Просто разделите по пробелам и получите первое и последнее слово.

a = ['Alex is working on OS_10', 'Peter is working on OS_8', 'Sana is working on OS_7']

extracted_list = [(item.split()[0], item.split()[-1]) for item in a]

final_result = '\n'.join((f"{tuple[0]} {tuple[1]}" for tuple in extracted_list))

print(final_result)
0 голосов
/ 18 декабря 2018

Получить первое слово с помощью split()[0] (разделить на пробелы и получить первое) и получить последнее слово с помощью split()[-1].

v = [ s.split()[0] + " " + s.split()[-1] for s in a ]

Затем вы можете объединить все с помощью ",\n"

print( ",\n".join(v) )
...