Как соединить строки, которые находятся в кортежах внутри списка в Python?
У меня есть цикл, который перебирает все слова в строках таблицы и делит их на буквенные биграммы с помощью nltk:
for i in range(len(my_data['Bigram'])):
nltk_syll = nltk.word_tokenize(my_data['Base'][i])
bigramms = list(nltk.bigrams(nltk_syll))
Вывод получается таким:
[(о, с), (с, н), (н, о), (о, в), (в, а)]
[(л, у), (у, н), (н, а)]
В идеале мне хотелось бы преобразовать это в то, что печатает print(*map(''.join, bigramms), sep=' '), но не печатать, а записать в my_data['Bigram'][i]. А именно :
ос сн но ов ва
лу ун на
С помощью my_data['Bigram'][i] = ''.join(map(str, bigramms)) у меня получается сделать вывод:
('о', 'с')('с', 'н')('н', 'о')('о', 'в')('в', 'а')
('л', 'у')('у', 'н')('н', 'а')
Как объединить буквы без кавычек, запятых, кортежей и списков?
Ответы (2 шт):
Автор решения: Евгений
→ Ссылка
inp = """
о с н о в а
л у н а
я б л о к о
а п е л ь с и н
""".strip()
for line in inp.splitlines():
# Если это пустая строка - пропускаем её
if not line:
continue
# Убираем пробелы по бокам, которые могли случайно затесаться
line = line.strip()
# В качестве начального символа берём нулевой (т.к. точно знаем, что строка не пустая и начинается с символа)
a = line[0]
bigramm = []
# Для всех последующих букв добавляем биграмму с предыдущей, обновляем первую букву
for letter in line.split()[1:]:
bigramm += [(a, letter)]
a = letter
# Получаем строковый результат из списков биграмм
result = ' '.join(
''.join(elem)
for elem in bigramm
)
# Выводим результат
print(result)
Результат:
ос сн но ов ва
лу ун на
яб бл ло ок ко
ап пе ел ль ьс си ин
P.s. для проверки правильности разбиения на биграммы, результат вывода самих списков:
[('о', 'с'), ('с', 'н'), ('н', 'о'), ('о', 'в'), ('в', 'а')]
[('л', 'у'), ('у', 'н'), ('н', 'а')]
[('я', 'б'), ('б', 'л'), ('л', 'о'), ('о', 'к'), ('к', 'о')]
[('а', 'п'), ('п', 'е'), ('е', 'л'), ('л', 'ь'), ('ь', 'с'), ('с', 'и'), ('и', 'н')]
Автор решения: Интик
→ Ссылка
a= [ ('о', 'с'),('с', 'н'),('н', 'о'),('о', 'в'),('в', 'а') ]
b=""
for i in range(len(a)):
b+=a[i][0]
b+=a[i][1] #а это можно убрать и последнюю букву дописать после цикла
#b+=a[len(a)-1][1]
print(b)