W291 trailing whitespace как исправить

Trailing whitespace is any spaces or tabs after the last non-whitespace character on the line until the newline.

In your posted question, there is one extra space after try:, and there are 12 extra spaces after pass:

>>> post_text = '''
...             if self.tagname and self.tagname2 in list1:
...                 try: 
...                     question = soup.find("div", "post-text")
...                     title = soup.find("a", "question-hyperlink")
...                     self.list2.append(str(title)+str(question)+url)
...                     current += 1
...                 except AttributeError:
...                     pass            
...             logging.info("%s questions passed, %s questions 
...                 collected" % (count, current))
...             count += 1
...         return self.list2
... '''
>>> for line in post_text.splitlines():
...     if line.rstrip() != line:
...         print(repr(line))
... 
'                try: '
'                    pass            '

See where the strings end? There are spaces before the lines (indentation), but also spaces after.

Use your editor to find the end of the line and backspace. Many modern text editors can also automatically remove trailing whitespace from the end of the line, for example every time you save a file.

This seems like a regression from the previous issue #411:

A triple-quoted string which contain a trailing whitespace is reported as W291:

foo = """Hello
world.   
How are you?
"""

[ file test.py – The second line contains the trailing spaces. ]

$ pycodestyle test.py 
test.py:2:7: W291 trailing whitespace

$ pip freeze
argparse==1.2.1
pycodestyle==2.0.0
wsgiref==0.1.2

The more detailed example given in #411 also seems to break, with all four types of errors reported.

Часть моих кодов:

            if self.tagname and self.tagname2 in list1:
                try: 
                    question = soup.find("div", "post-text")
                    title = soup.find("a", "question-hyperlink")
                    self.list2.append(str(title)+str(question)+url)
                    current += 1
                except AttributeError:
                    pass            
            logging.info("%s questions passed, %s questions 
                collected" % (count, current))
            count += 1
        return self.list2

Предупреждение pep8:

trailing whitespace 37:try
trailing whitespace 43:pass

Не могли бы вы сказать мне, что это такое?

5 ответов

У меня есть похожее предупреждение pep8 W291 trailing whitespace

long_text = '''Lorem Ipsum is simply dummy text  <-remove whitespace
of the printing and typesetting industry.'''

Попробуйте изучить конечные пробелы и удалить их. пример: два пробела в конце Lorem Ipsum is simply dummy text


4

heykarimoff
28 Мар 2018 в 09:31

Завершающие пробелы:

It is extra spaces (and tabs) at the end of line      
                                                 ^^^^^ here

Разденьте их:

#!/usr/bin/env python2
"""
strip trailing whitespace from file
usage: stripspace.py <file>
"""

import sys

if len(sys.argv[1:]) != 1:
  sys.exit(__doc__)

content = ''
outsize = 0
inp = outp = sys.argv[1]
with open(inp, 'rb') as infile:
  content = infile.read()
with open(outp, 'wb') as output:
  for line in content.splitlines():
    newline = line.rstrip(" t")
    outsize += len(newline) + 1
    output.write(newline + 'n')

print("Done. Stripped %s bytes." % (len(content)-outsize))

https://gist.github.com/techtonik/c86f0ea6a86ed3f38893


30

dumbledad
2 Окт 2019 в 13:19

Завершающие пробелы — это любые пробелы или табуляции после последнего непробельного символа в строке до новой строки.

В вашем опубликованном вопросе есть один дополнительный пробел после try: и 12 дополнительных пробелов после pass:

>>> post_text = '''
...             if self.tagname and self.tagname2 in list1:
...                 try: 
...                     question = soup.find("div", "post-text")
...                     title = soup.find("a", "question-hyperlink")
...                     self.list2.append(str(title)+str(question)+url)
...                     current += 1
...                 except AttributeError:
...                     pass            
...             logging.info("%s questions passed, %s questions 
...                 collected" % (count, current))
...             count += 1
...         return self.list2
... '''
>>> for line in post_text.splitlines():
...     if line.rstrip() != line:
...         print(repr(line))
... 
'                try: '
'                    pass            '

Видишь, где кончаются струны? Перед строками есть пробелы (отступы), но есть и пробелы после.

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


54

Martijn Pieters
28 Янв 2014 в 19:54

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

Если вы используете VS Code, вы можете поместить это в свой файл settings.json, чтобы автоматически обрезать все пробелы при каждом сохранении файла.

"files.trimTrailingWhitespace": true


2

Hai Tran
10 Мар 2022 в 06:06

Это всего лишь предупреждение, и оно не создает проблем для запуска вашего проекта, вы можете просто проигнорировать его и продолжить кодирование. Но если вы, как и я, одержимы чистым кодированием, у вас есть два варианта:

  1. Наведите указатель мыши на предупреждение в VS Code или любой IDE и используйте быстрое исправление для удаления пробелов.
  2. Нажмите f1, затем введите trim trailing whitespace.


10

Mohammad Hashemi
12 Фев 2020 в 16:16

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Pick a username
Email Address
Password

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

Askar

Добрый вечер. Решил, но в линтере выдает такое сообщение:
(/usr/src/app/src/solution.py:3:32: W291 trailing whitespace
(number1, number2) = number)
т.е.есть дополнительный пробел, но вроде все норм.
подскажите пжлста где. Спасибо за ответ


1


0

Askar

Прошло, не знаю что было. После нескольких попыток прошло.


0

Используйте Хекслет по-максимуму!


  • Задавайте вопросы по уроку

  • Проверяйте знания в квизах

  • Проходите практику прямо в браузере

  • Отслеживайте свой прогресс

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

Рекомендуемые программы

профессия


от 6 300 ₽ в месяц

Разработка фронтенд-компонентов для веб-приложений

профессия


от 5 025 ₽ в месяц

Сбор, анализ и интерпретация данных

профессия


от 6 300 ₽ в месяц

Разработка веб-приложений на Django

профессия


от 6 300 ₽ в месяц

Разработка приложений на языке Java

профессия


от 6 300 ₽ в месяц

Разработка веб-приложений на Laravel

профессия


от 6 183 ₽ в месяц

Ручное тестирование веб-приложений

профессия


от 6 300 ₽ в месяц

Разработка бэкенд-компонентов для веб-приложений

профессия


от 10 080 ₽ в месяц

Разработка фронтенд- и бэкенд-компонентов для веб-приложений

профессия


от 5 840 ₽ в месяц

Создание веб-приложений со скоростью света

Верстка с использованием последних стандартов CSS

профессия


от 6 300 ₽ в месяц

Автоматизированное тестирование веб-приложений на JavaScript

в разработке

дата определяется

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