Объединение триграмм из кортежа в словаре

Если вы хотите разрешить не-латентные символы, это работает для меня очень хорошо.

"^[\\p{L}\\p{N}\\._%+-]+@[\\p{L}\\p{N}\\.\\-]+\\.[\\p{L}]{2,}$"

Он не разрешает IP после @, но самый действительный адрес электронной почты из xxx@xxx.TDL может быть подтвержден с ним. \p{L} проверяет UTF-буквы и \p{N} проверяет номера UTF. Вы можете проверить этот документ для получения дополнительной информации.

0
задан Lexipaichnidi 20 February 2019 в 14:09
поделиться

2 ответа

Вы можете использовать метод string join . Все, что вам нужно сделать, это вызвать '_'.join в кортеже триграмм при печати. ​​

print(str('_'.join(entry[0]))+"\t"+str(entry[1]))

Другие примечания:

(1) Вы можете быть более питоническим и генерировать свой listText, используя понимание списка следующим образом: listText = [word.lower() for word in lyrics.split()]

(2) Вы можете использовать setdefault словаря вместо if/else для увеличения / инициализации триграммы следующим образом: freq.setdefault(trigram, 0), а затем для увеличения freq[trigram] += 1 без использования какого-либо блока if / else. Прямо сейчас вы перебираете freq.keys() в поиске trigram в вашем выражении if, которое является постоянным во времени в Python 3 (эквивалентно высказыванию trigram in freq), но линейным во времени в Python 2.

0
ответ дан Endyd 20 February 2019 в 14:09
поделиться

Если вам нужно только связаться с ними, вы можете использовать str.join

trigram = (listText[0], listText[1], listText[2])
c_trigram = '_'.join(*trigram)

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

0
ответ дан Nullman 20 February 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: