string — Поиск количества символов между двумя словами в тексте на Python

Как найти ближайшее расстояние между двумя словами в тексте или в большой коллекции текстовых файлов.

Например, я хочу найти ближайшее расстояние между двумя словами, такими как «is» и «are» в тексте. Вот что у меня есть:

 text = "есть ли способ найти ближайшее расстояние двух слов - like is и are - друг от друга."
def dis_words_text (текст, слово1, слово2):
    импортировать numpy как np
    ind1 = текст. найти (слово1)
    ind2 = текст. найти (слово2)
    dis = "хотя бы одно из слов не в тексте" if -1 in (ind1,ind2) else np.abs(ind1-ind2)
    возврат (дис)
dis_words_text (текст, «есть», «есть»)
Выход: 25
dis_words_text (текст, «почему», «есть»)
Вывод: "хотя бы одно из слов не в тексте"
 

Похоже, приведенный выше код учитывает расстояние между первыми «есть» и «есть», а не ближайшее расстояние, которое должно составлять 7 символов. См. также Поиск позиции слова в строке и Как найти индекс точного слова в строке в Python в качестве ссылок.

Вот у меня вопрос: 1) как найти ближайшее расстояние двух слов (количество символов между ними), если слова в тексте повторяются, 2) скорость тоже важна применительно к большому количеству текстов.

  • python
  • строка
  • поиск
  • текст
  • расстояние

5

Вот решение для поиска ближайшего расстояния между двумя словами в тексте на основе количества символов:

 def Nearest_Values_twolist(list1,list2):
    г1 = список1[0]
    г2 = список2[0]
    мин_значение = 1000000
    для строки1 в списке1:
        для строки2 в списке2:
            т = абс (строка1 - строка2)
            если t

Test:

 text = "есть ли способ найти ближайшее расстояние между двумя словами - like is и are - друг от друга. "
самое близкое_расстояние_слов (текст, w1, w2)
 

Выход: 7

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Python — получить количество символов, слов, пробелов и строк в файле

Улучшить статью

Сохранить статью

  • Уровень сложности: Easy
  • Последнее обновление: 08 сент, 2022

  • Прочитать
  • Обсудить
  • Улучшить статью

    Сохранить статью

    Предварительное условие: Обработка файлов в Python

    Для заданного текстового файла fname задача состоит в том, чтобы подсчитать общее количество символов, слов, пробелов и строк в файле.

    Как мы знаем, Python предоставляет множество встроенных функций и модулей для работы с файлами. Давайте обсудим различные способы подсчета общего количества символов, слов, пробелов и строк в файле с помощью Python.

    Получить количество символов, слов, пробелов и строк в файле

    Наивный подход к получению количества символов, слов, пробелов и строк в файле

    В этом подходе идея состоит в том, чтобы решить задачу путем разработки наша собственная логика. Без использования какой-либо встроенной функции Python будет подсчитано общее количество символов, слов, пробелов и строк файла. Ниже приведена реализация описанного выше подхода.

    Питон3

     

    def counter(fname):

     

        

         num_words = 0

        

     

        

         num_lines = 0

    NUM_CHARC = 0

          

        

         num_spaces = 0

        

     

        

        

        

         with open ( fname, 'r' ) as f:

              

           

            

             for line in f:

                  

                

                

                

                

                 num_lines + = 1

                  

                

                

                

                

                

                 word = 'Y'

                  

                

                

                 for письмо в строка:

                      

                    

                    

                    

                     if (letter ! = ' ' and word = = 'Y' ):

                         

                                          0103

                         num_words + = 1

                          

                        

                        

                        

                        

                         word = 'N '

                          

                    

                    

                    

                     elif (letter = = ' ' ):

                          

                        

                        

                        num_spaces + = 1

                          

                        

                        

                        

                        

                         word = 'Y'

                          

                    

                   

                    

                     for i in letter:

                          

                        

                        

                        

                        

                         if (я ! = "" и i ! = "\n" ):

                              

                            

                            

                             num_charc + = 1

                              

        

         печать ( "Number of words in text file: " ,

               num_words)

          

        

         print ( "Number of lines in Файл текста: « ,

    num_lines)

    . 0103 ( 'Number of characters in text file: ' ,

               num_charc)

          

        

         print ( 'Number of spaces in Текстовый файл: ' ,

    NUM_SPACES)

    IF __NAME__ = __ NAME__ = __MAME__ = 0102 = '__main__' :

         fname = 'File1. txt'

         try :

             counter(fname)

         except :

             print ( 'File not found' )

    Output:

     Количество слов в текстовом файле: 25
    Количество строк в текстовом файле: 4
    Количество символов в текстовом файле: 91
    Количество пробелов в текстовом файле: 21 

    Использование некоторых встроенных функций и функций модуля ОС

    В этом подходе идея состоит в том, чтобы использовать метод os.linesep() модуля ОС для разделения строк в текущем Платформа. Когда сканер интерпретатора встречает os.linesep, он заменяет его символом \n. После этого для выполнения задачи будут использоваться функции strip() и split(). Получите больше информации о функциях strip() и split(). Ниже приведена реализация описанного выше подхода.

    Python3

     

    import os

     

    def counter(fname):

          

        

         num_words = 0

    num_lines = 0

    = 0

    . 0102       

        

         num_charc = 0

          

        

         num_spaces = 0

          

        

        

        

         с открыть (fname, 'r' ) as f:

              

            

            

             for line in f:

                  

                

    Линия = line. strip(os.linesep)

                  

                

                

                

                

                

                

                 wordslist = line.split()

                  

                

                

                

                

                 num_lines = num_lines + 1

                  

                

                

                

                

                 num_words = num_words + len (wordslist)

                  

                

                

                

                

                 num_charc = num_charc + сумма ( 1 для c in line

                             if c not in (os. linesep, ' ' ))

                  

                

    num_spaces = num_spaces + sum ( 1 for s in line

                                     if s in (os.linesep, ' ' ))

    Печать ( "Количество в текстовом файле:" ( ". 0102 ,

               num_words)

          

        

         print ( "Number of lines in text file: " ,

               num_lines)

          

        

         печать ( символов в текстовом файле0103 ,

               num_charc)

          

        

         print ( "Number of spaces in text file: " ,

               num_spaces )

    IF __NAME__ = = '__main__' :

    :

    03 fname = 'File1.



    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *