问题的发现

python的许多编辑器都可以写出漂亮精简的代码,但是一般的主流编辑器都很好有代码自动格式化的功能。visual studio在每一行写完代码敲击分号(;)的时候都能够对这一整行的代码进行重新排版,使其能够具有规范化代码形式。
这是没有打分号的形式:

int a,b  ,c= 12

这是打过分号的形式:

int a, b, c = 12;

visual studio编辑器的强大让python选手非常嫉妒,但python编辑器甚至是大多数的文本编辑器都是可以通过加载插件的形式让我们编写好的代码(不符合代码排版规范)能够自动重新排版,使其符合PEP8代码规范。

问题的解决

针对大多数编辑器不能自动格式化排版的问题,autopep8插件能够让python编辑器如虎添翼。autopep8自动排版插件需要两个步骤,第一个步骤为安装autopep8,在anconda的指定环境下,用prompt以管理员方式打开并输入:

pip install --upgrade autopep8

环境会自动搜索autopep8进行安装。除此之外,还需要安装下载插件文件,通过GitHub上的库即可下载解压:连接地址
之后将解压出来文件中的文件夹spyder_autopep8放在指定的spyder文件目录,像我的文件目录就在

D:\pyEnvironment\Anaconda3\envs\python3.6\Scripts

因为我在原来的anconda环境中重新部署了一个python3.6的环境,所以路径名称可能会和读者的不太一致,大家找到自己的spyder启动项路径即可。
随后再次打开spyder编辑器,就可以在上方source工具栏里看到run autopep8选项

没有进行代码格式化的代码为:

from urllib.request import urlopen
from bs4   import     BeautifulSoup
import re

pages=     set()


def getLinks   (pageUrl):
    global     pages
    html = urlopen("http://en.wikipedia{}".format(pageUrl))
    bs =BeautifulSoup(html, 'html.parser')
    try:
        print(bs.h1.     get_text())
        print   (bs.find(id="mw-content-text"). 
              find_all('p')[0])
        print(bs.find(id='ca-edit').
              find('span').find('a').attrs['href'])
    except AttributeError:
        print("页面缺少一些属性!不过不用担心!")
    for link in bs.   find_all('a', href=re.compile('^(/wiki/)')):
        if 'href' in link.attrs:
            if link.attrs['href'] not in pages:
                # 我们遇到了一个新的页面
                newPage = link.attrs['href']
                print('-'*20)
                print      (newPage)
                pages.add    (newPage)
                getLinks     (newPage)
getLinks('')

经过格式化之后的代码为:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re

pages = set()


def getLinks(pageUrl):
    global pages
    html = urlopen("http://en.wikipedia{}".format(pageUrl))
    bs = BeautifulSoup(html, 'html.parser')
    try:
        print(bs.h1.get_text())
        print(bs.find(id="mw-content-text").
              find_all('p')[0])
        print(bs.find(id='ca-edit').
              find('span').find('a').attrs['href'])
    except AttributeError:
        print("页面缺少一些属性!不过不用担心!")
    for link in bs.find_all('a', href=re.compile('^(/wiki/)')):
        if 'href' in link.attrs:
            if link.attrs['href'] not in pages:
                # 我们遇到了一个新的页面
                newPage = link.attrs['href']
                print('-'*20)
                print(newPage)
                pages.add(newPage)
                getLinks(newPage)


getLinks('')

这样以后清楚了许多,当然也可以直接使用Ctrl+F8快捷键直接进行autopep8,同样能够达到令人满意的效果。

更多推荐

如何让spyder编写的代码自动格式化