Ошибка при поиске уникальных слов в текстовом файле - PullRequest
1 голос
/ 12 марта 2019

Я работаю над проектом, в котором я пытаюсь найти все уникальные слова в текстовом файле, однако, похоже, застрял на этой ошибке, которая произошла после того, как я закодировал строку, которая удаляет все знаки препинания из списка.

Вот мой код:

import string
a = open('blank.txt')      
def main():
    check = []
    for line in a:
      lines = line.lower()
      words = line.split()
      for word in words:
        if word not in check:
            check.append(word)
      check = [''.join(c for c in s if c not in string.punctuation) for s in check]
      check = [s for s in x if s]
check.sort()
print(check)

if __name__ == '__main__':
main()

После выполнения этого я получаю сообщение об ошибке: если слово не проверяется:

UnboundLocalError: local variable 'check' referenced before assignment

Интересноесли у кого-нибудь были какие-то идеи, которые могли бы помочь.Спасибо

1 Ответ

0 голосов
/ 12 марта 2019

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

import string


def main():
    # `check` needs to be inside your function to be accessible.
    # → You can read about "variable scope" if in doubt.
    # You also need to read your file inside your function
    # if you don't pass any argument to it.
    # Note that it is generally better to use a 'with' block
    # to automatically close your file when you are done with it.

    check = []
    with open('blank.txt') as a:
        content = a.read().lower().split()
        for word in content:
            if word not in check:
                check.append(word)
        check = [''.join(c for c in s if c not in string.punctuation)
                  for s in check]
        check = [s for s in check if s]
        print(check)


if __name__ == '__main__':
    main()  # This has to be indented

Если blank.txt содержит следующий текст:

I 'Я работаю над проектом, в котором я пытаюсь найти все уникальные слова в текстовом файле, однако я, похоже, застрял на этой ошибке, которая произошла после того, как я закодировал строку, которая удаляет все знаки препинания из списка.

Ваш вывод будет:

['im', 'working', 'on', 'a', 'project', 'where', 'trying', 'to', 'find', 'all', 'the', 'unique', 'words', 'in', 'txt', 'file', 'however', 'i', 'seem', 'be', 'stuck', 'this', 'error', 'that', 'occurred', 'after', 'coded', 'line', 'removes', 'punctuation', 'from', 'list']

Если ваш файл пуст, вы просто получите пустой список.

...