维基百科文件解析成中文遇到的变量类型、编码问题
2019独角兽企业重金招聘Python工程师标准>>>
为了练习Gensim中文词向量建模,要用到wiki文件做语料库。因为这个文件是xml格式的,需要把它转成文本格式,所以有了下面的Python代码。
1、参考的代码
在某视频教程中看到的代码是这样写的:
运行后报错:
File "process-xml.py", line 32, in <module>s = space.join(text)
TypeError: sequence item 0: expected a bytes-like object, str found
2、做类型转换
既然text是str,那么就将str转成bytes。
修改了代码:
for text in wiki.get_texts():for item in text:s = space.join(item.encode(encoding="utf-8"))s = space.join(text)+"\n"
还是报错。
File "process-xml.py", line 30, in <module>s = space.join(item.encode(encoding="utf-8"))
TypeError: sequence item 0: expected a bytes-like object, int found
3、网上搜索到说是py版本的原因
觉得可能要解决了,然而仔细一看,他的写法跟第1处的一样。
文章地址:https://www.cnblogs.com/combfish/p/6413553.html
4、那么就试试用老版本的写法
就是第24行space不用b类型。(注意26行,没有写编码)
又报错了:
File "process-xml2.py", line 30, in <module>output.write(s)
UnicodeEncodeError: 'gbk' codec can't encode character '\u0107' in position 200: illegal multibyte sequence
既然是gbk的问题,那么把编码改成u8呢?
于是把chcp 65001试着这样把编程改成u8,不出所料,没有用。
既然是gbk的问题,那就在虚拟机里面跑吧,可想而知,很慢。3G内存的Ubuntu虚拟机,跑1.49G数据,耗时97分钟,Windows跑大概半小时左右。
5、准备到Stack Overflow上提问
为了准备提问内容,就重演一遍灾难过程。
突然发现跑成功了。
仔细一看,这回原来是第26行的原因。output = open(outp,'w',encoding='utf-8')
,输出要加上编码。
6、完整代码
因为这个错误地方是在文件全部读完,写到磁盘的时候的代码,需要等一段时间,才会走到这段代码,所以测试时,用的是一个10M的小WIKI文件测试的。
#-*- coding: utf-8 -*-
# @File : process-xml.pyimport logging
import os.path
import sys
from gensim.corpora import WikiCorpusif __name__ == '__main__':program = os.path.basename(sys.argv[0])logger = logging.getLogger(program)logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s')logging.root.setLevel(level=logging.INFO)logger.info("running %s"% ' '.join(sys.argv))if len(sys.argv) > 3:print(globals()['__doc__'] % locals())sys.exit(1)inp,outp = sys.argv[1:3]space = ' 'i = 0output = open(outp,'w',encoding='utf-8')wiki = WikiCorpus(inp,lemmatize=False,dictionary={ })for text in wiki.get_texts():s = space.join(text)+"\n"output.write(s)i = i+1if(i% 10000 == 0):logger.info("Saved "+str(i) + " articles")output.close()logger.info("Finished Saved "+ str(i) +" articles")# python process-xml.py zhwiki-20180620-pages-articles.xml.1.49G.bz2 wiki.zh.1.49G.text
转载于:https://my.oschina.net/datadev/blog/1836529
维基百科文件解析成中文遇到的变量类型、编码问题相关推荐
- 自定义字体文件解析成人眼可识别文字
# coding=utf-8 from fontTools.ttLib import TTFont from PIL import Image, ImageDraw, ImageFont #绘制图片 ...
- 看这里,教你如何快速将pdf文件翻译成中文
因为网上下载的PDF资料,往往掺杂着一些英文,所以中英文翻译是一件很平常的事,毕竟不是每个人的英文都那么好,轻轻松松的就能够看完一篇英文的文件,那么,我们就要寻找翻译工具来帮助我们看完了,那么如何将P ...
- [评测] 利用维基百科实现高质量中文简繁转换
自从有了简体中文以来,中文的简繁转换便成了一项新兴职业,特别是近年来,两岸三地的交流愈发频繁,这种需求更为旺盛.当然,你可以付钱选择专业的公司来帮您完成文件.文章等等的职业级简繁转换:然而,您也可以选 ...
- java 文件解析成JSON数据(其三)
个人用途,用于将数据解析成json格式使用 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; ...
- mot文件解析成bin
mot固件文件转成bin文件 mot文件介绍 开始解析 mot文件介绍 mot s19 bin hex都可以用于固件文件的存储,其中bin文件就是固件原始数据,只记录固件的二进制数据流,mot文件实际 ...
- long类型怎么转换成string_Python知识点-Python变量类型有哪些?
Python的内置变量类型是非常基础的知识点,善用变量类型转换在日常的工作学习中会给我们带来非常大的帮助. 相对于其他语言,Python的变量类型既有自己的特色方法,也有借鉴前辈的优秀之处.今天酷仔整 ...
- 怎样将英文html文件转换成中文乱码,解决html导出pdf中文乱码问题的正确姿势
简介 jspdf是歪果仁开发的,因此在一开始就没想过支持非英文以外的文字,这就导致了非英文的文本都是乱码. 因此就有其他大佬给增加了其他解决方案,到了1.5版本也正式加入了非英文支持的解决方案. 解决 ...
- cron翻译_将定时任务cron 解析成中文
在使用定时器 quartz 时,其中的cron 表达式,老板表示作为开发的你能看懂外,其他的非开发同事可能看不懂,要用一个他们能看懂的方式表达出来. 还好我们的项目要求的表达式不是特别的麻烦,所以就写 ...
- js把base64串解析成中文_回文问题终极篇:最小代价构造回文串
学算法认准 labuladong 东哥带你手把手撕力扣? 点击下方卡片即可搜索? 读完本文,你可以去力扣完成第 1312 题「让字符串成为回文串的最少插入次数」,难度 Hard. 回文串就是正着读反着 ...
最新文章
- Windows10上安装Git 2.10.2详细图解
- android Handler更新UI
- MIT 算法导论 (二)Math Notation
- zookeepe安装配置_Zookeeper安装配置及简单使用
- 职称英语与计算机考试试题,2020年职称计算机考试模拟选择试题及答案.doc
- IIS5.1安装设置-Sql Sever2008安装设置-移动端设置等必读
- 后缀树c语言算法,C语言数据结构之中缀树转后缀树的实例
- SVPWM算法的推导
- USB 协议整理 八:STM32官方USB库
- LaTex 论文排版(1): Win10 下 LaTex所需软件安装 (Tex live 2018 + Tex studio)
- 命令行查看文件夹大小
- Vue 作者尤雨溪,引路中国程序开发
- 香橙派PC 2(H5)配置备忘录
- H5-农阳历日期互转并对应
- matlab中numden函数,numden函数 MATLAB里面numden函数有什么用?
- 【原创】DDR3 SO-DIMM 内存条硬件知识
- H.264/AVC标准参考软件 JM
- winform中使用ReportViewer的时候,找不到报表数据面板.
- 不用深度学习网络,只需预先设置NAS算法,就能实现AutoML自动机器学习的革命吗?
- 微机原理与接口技术重要的知识点