@AlessandrIT

Как найти количество одинаковых слов в одном и другом списке?

Имеется 2 списка.Один - слова, количество упоминаний которых требуется получить.
Второй - список из слов, получается путём
f = open('text.txt', 'r')
b = []
for line in f:
   a = line.split()
   for x in a:
      b.append(a)
f.close()


В файле текст помимо слов содержит знаки препинания, цифры, прочий мусор.

Вопрос - как можно получить количество вхождений слов из списка в строку?

P.S. Таких списков несколько, код желательно с возможностью оптимизации.
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
@LJ322
Если я правильно понял, то имеется несколько списков со словами, упоминание которых необходимо подсчитать в строках файла (в списке строк)
spoiler
f = open('text.txt', 'r')
b = []
A = []                                  # Список слов, упоминание которых нужно посчитать в файле
B = []                                  # Список слов №2
for line in f:
    a = line.split()
    c = []                              # Список для нормальных слов
    for x in a:
        for char in x:                  # Проверяет символы char в слове x 
            if not char.isalpha():      # Если char не является буквой
                x = x.replace(char, '') # Убирает char, не являющийся буквой
        c.append(x.lower())             # Добавляет нормальное слово (без всяких !"-, символов) в список (с нижним регистром)
    b.append(c)                         # Добавляет строку из нормальных слов в список
f.close()


for (i, j) in zip(A, B):                # Параллельный обход всех списков со словами, количество которых надо посчитать (для примера A и B)
    for line in b:
        print('Строка ', b.index(line), ': ', i, '=>', line.count(i), ' ', j, '=>', line.count(j))


P.S. Перечитал вопрос, видимо речь шла о нескольких файлах и об одном списке со словами, которые необходимо посчитать. Тогда достаточно добавить ещё один список строк, как вы это сделали изначально:
spoiler
g = open('text2.txt', 'r')
'...'

for i in A:                        
    for (line1, line2) in zip(b, g):    # Параллельный обход нескольких списков со строками
        print('Строка в списке b ', b.index(line1), ': ', i, '=>', line1.count(i), ' ', 'Строка в списке g ', g.index(line2), ': ', i, '=>', line2.count(i))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы