Как преобразовать список списков в список кортеж + список - PullRequest
0 голосов
/ 02 мая 2019

У меня есть список списков, например

l =  ["{{{1star}}} Do not bother with this  restaurant.",  "{{{1star}}}
The food is good but the service is awful."]

Я хотел бы преобразовать этот список в другой список. Новый список будет содержать кортеж и другой список. Первым элементом кортежа будет то, что находится внутри {{}} в виде строки, а второй элемент кортежа будет содержать остальную часть текста в виде списка. Я ожидаю следующий вывод:

output =  [("{{{1star}}}", ["Do not bother with this  restaurant."]), 
("{{{1star}}}", ["The food is good but the service is awful."])]

Спасибо!

1 Ответ

0 голосов
/ 03 мая 2019

Я пытался получить то, что вы хотите, с помощью некоторых манипуляций со строками

l =  ["{{{1star}}} Do not bother with this  restaurant.",  "{{{1star}}} The food is good but the service is awful."]

out = []

for strings in l : 
  s = strings.split()
  first = s[0] 
  second = strings.replace(s[0],'')
  tuple = ( first , second ) 
  out.append(tuple)

print(out)

или с помощью регулярных выражений

import re

l =  ["{{{1star}}} Do not bother with this  restaurant.",  "{{{1star}}} The food is good but the service is awful."]

out = []

for strings in l : 
  s = re.match( r'(.*)\}(.*?) .*', strings, re.M|re.I)
  print(s)
  if s : 
    first = s.group(1) + '}'
    second = strings.replace(first,'')
    tuple = ( first , second ) 
    out.append(tuple)

print(out)
...