340.collins字典解析3

2017-08-16  本文已影响4人  科幻经典

在Debug过程中遇到了很多错误,后面发现都是没有统一的格式化文本造成的,尤其是在星级前面的空格,耽误了很多时间。

def digitize_star(_star):
    '''
    :param _star: 词典中提取的星级图形符号,如''
    :return: 数字星级1-5
    '''
    n = 0
    for i in range(5):
        if  _star[i] == '':
            n += 1
        else:
            return n
    return n

f = open("E:/Desktop/collins.txt", 'r', encoding='utf-8')
def process_line(line):
    soup = BeautifulSoup((line), 'html.parser')
    _word = soup.font.string
    _star = soup.find_all('font')
    _num = 0
    for t in _star:
        if 'style' in t.attrs and t.attrs['style'] == 'color:grey;':
            _num = digitize_star(t.string[1:])
    _star = _num
    print(_star, ' ', _word)
    # _div = soup.div.div.div
for i in range (6):
    line = f.readline()
    process_line(line)
f.close()

此时,文件已经可以输出星级加单词的形式列表。

|| [python 1.py]
|| 0   24-7
|| 0   911
|| 0   999
|| 2   A
|| 5   a
|| 0   a-
|| [Finished in 0 seconds]

现在让我们加入序号,词性和词义。

格式的不统一让我浪费了很多时间,可见统一的格式对数据库是多么重要。很多事情就是因为某个单词,没有一项,或者多出了某个项,就不停的一直出bug。要特意写一个条件的判断,这个格式是否统一,才能够解决这个问题。

还有对于bs4的应用,基础功还是不够扎实。尤其对于标签里面没有标签的纯文本如何提取。还有对于bs4特定对象的类型的组成,很多都是可迭代的文本。以及对于contents对象的使用。都有许多要改进的。

在使用的过程中,vim的asyncrun输出的quickfix窗口显示中文不正常,于是又改回了以前的非同步的感叹号模式,中文显示正常。

上一篇下一篇

猜你喜欢

热点阅读