Подсчет символов сравнения в текстовом файле

86
6

У меня возникают проблемы с одним из моих заданий.

Я должен написать код, если он принимает текстовый файл и вычисляет в нем символы сравнения.

проблема в том, что он не печатает '==', '> =' или '<='

Мой код:

from collections import Counter

chars = ['==', '>=', '<=', '<', '>']
file = open(input('specify a file'))
character_distr = Counter()

for line in file:
character_distr += Counter(line.lower())

print('Distribution of characters: ')
for char, count in sorted(character_distr.items()):
if char in chars:
print('{} : {}'.format(char, count))

спросил(а) 2021-01-27T23:41:03+03:00 2 месяца, 2 недели назад
1
Решение
62

Попробуй это:

c1 = Counter('hello there')

Затем попробуйте следующее:

c2 = Counter('hello there'.split())

Обратите внимание на разницу? Когда Counter получает строку, он подсчитывает символы. Вам нужно split строку в list если вы хотите, чтобы он подсчитывал токены, отличные от отдельных символов.

Поэтому, если между вашими операторами есть удобные пробелы, добавьте .split() в line.lower() и там вы идете. Если нет (что, конечно же, законно), вам нужно немного усложниться с помощью lexer или (более вероятно) регулярного выражения.

import re
expression = 'if x>4: do_thing(); elif x==12: other_thing = x'

len(re.findall(r'==|>=|<=|<|>',expression))
Out[12]: 2

ответил(а) 2021-01-27T23:41:03+03:00 2 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема