Скрипт, который читает и выводит в списке, в каких строках он использовался - PullRequest
1 голос
/ 16 февраля 2020

Я использую файл .py с «некоторым текстом», затем использую свой код для создания словаря того, сколько раз слово используется в тексте.

{}    
for x in text:       

        x = x.lower()    

Однако , я ищу способ выполнить список, в котором строки, в которых используется элемент (т. Е. X, words, isalpha и т. Д.), Я не хочу включать for или if et c. Чтобы распечатать скрипт выше, я использую

filename = 'test.py'

        print(n, line, end='')

Это то, что я хочу в конечном выводе:

1
2 words = {} 
          words[x] += 1

10 print(words)


x               
words         ]

lower        [3]

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

1 Ответ

1 голос
/ 16 февраля 2020

Если я четко понимаю, что вы хотите выполнить, вы можете использовать следующий код:

import re
from keyword import kwlist


i = 1
map = {}
with open("script.py", "r") as file:
    while True:
        line = file.readline()
        if not line: break

        # iterates over each real word on each line
        for x in re.split(r'[^\w]', line):
            # adds the world to the map only if it is not '', nor a number, nor a python keyword
            if x and not x.isdigit() and x not in kwlist:
                if not x in map: map[x] = [i]
                else: map[x].append(i)
        i += 1


# displays the map
for key in map:
    print(key, map[key], sep='\t\t')

Это приведет к:

words       [2, 6, 7, 9, 10]
x           [3, 4, 5, 5, 6, 7, 9]
text        [3]
isalpha     [4]
lower       [5]
print       [10]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...