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窗口显示中文不正常,于是又改回了以前的非同步的感叹号模式,中文显示正常。