2014-01-28 4 views
20

einige Stück meines Codes:Was ist ein Leerzeichen und wie kann ich damit umgehen?

  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 Warnung:

trailing whitespace 37:try 
trailing whitespace 43:pass 

Können Sie mir bitte sagen, was ist das?

+9

Downvoters: Ohne Kommentar? Auf einem neuen Poster, dessen Frage klar formuliert ist und eine klare Antwort hat? – nmichaels

+0

@nmichaels Ich wollte einen Kommentar schreiben, wurde aber unterbrochen, also hier ist es. Ich habe abgelehnt, weil die Frage "what is whiteshrace" weder ein spezifisches Programmierproblem ist, noch allein unglaublich nützlich ist (wie man es bemerkt oder automatisch mit ihr umgeht, ist nützliche Information, aber OP hat nicht den Sprung gemacht, diese Frage zu stellen)). Die eigentliche Frage "what is trailing whitespace" wird durch eine einfache Google-Suche oder eine Wörterbuchdefinition beantwortet. Auch, wie neu oder nicht neu ein OP ist, sollte keinen Einfluss auf die Entscheidung zum Downvote haben oder nicht - gleiche Standards für alle, bitte. – l4mpi

+1

@ l4mpi Ich denke "Was ist ein Leerzeichen und wie kann ich damit umgehen?" beinhaltet den Teil "Wie kann ich damit umgehen". Es ist nicht exklusiv für die Programmierung, aber da es eine Nachricht ist, die ein Programmiertool aussendet, denke ich nicht, dass es besonders am Thema liegt. Um Neueinsteigern das Leben zu erleichtern, halte ich nicht die "gleichen Standards für alle". Wir können Menschen nicht zu guten Plakaten machen, wenn wir sie früh erschrecken. – nmichaels

Antwort

16

Nachgestellte Leerzeichen sind Leerzeichen oder Tabulatoren nach dem letzten Nicht-Leerzeichen auf der Zeile bis zum Zeilenumbruch.

In Ihrer informierten Frage, gibt es einen zusätzlichen Platz nach try:, und es gibt 12 zusätzliche Leerzeichen nach 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   ' 

Sehen Sie, wo die Saiten enden? Es gibt Leerzeichen vor den Zeilen (Einrückung), aber auch Leerzeichen nach.

Verwenden Sie Ihren Editor, um das Ende der Zeile und die Rücktaste zu finden. Viele moderne Texteditoren können auch nachfolgende Leerzeichen am Ende der Zeile automatisch entfernen, zum Beispiel jedes Mal, wenn Sie eine Datei speichern.

+0

In Emacs: 'C-M-% + $' dann drücken Sie zweimal Return. Wow, das sieht kryptischer aus, als wenn ich es eintippe. – nmichaels

+0

sicher nachfolgende Leerzeichen ist gültig (und von PEP8 gemeldet) auf jeder Zeile, nicht nur nach ':', oder? – Christoph

+0

@Christoph: Entschuldigung, ja, alle nachfolgenden Whitespaces; Das war ein Bearbeitungsfehler. –

7

Nachgestellte Leerzeichen:

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

Streifen ihnen:

#!/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