这一篇放在NLP下面 但其实与机器学习/神经网络没啥关系,不过广义上看 也是在"自然语言处理"中遇到的问题..

linux下 发现一些奇怪的问题,看起来为空的字符串,长度却是1:

控制台运行的部分代码如下:

my_list = []
[my_list.append(x) for line in qfl_df['text'] for x in jieba.cut(line) if len(x) == 1]
my_counter = Counter(my_list)
print(my_counter.most_common())

('觉', 1),
 ('颠', 1),
 ('彘', 1),
 ('魋', 1),
 ('节', 1),
 ('饩', 1),
 ('粟', 1),
 ('殆', 1),
 ('', 1),
 ('抚', 1),
 ('尊', 1),
 ('匹', 1),
 ('宅', 1),
 ('璞', 1),
 ('石', 1),
 ('蜃', 1),
 ('蛤', 1),
 ('羇', 1),
 ('縻', 1),
 ('坑', 1),
 ('抑', 1),
 ('庞', 1),
 ('涓', 1),
 ('殊', 1),
 ('柬', 1),
 ('畎', 1),
 ('亩', 1),
 ('闺', 1),
 ('', 1),
 ('佃', 1),
 ('伏', 1),
 ('单', 1),
而再打印my_counter中这些看起来为空的字符的长度, 长度确实为1而不是0.. 也奇怪,还可以有多个..

找到其中一条被cut的句子, 某行x:  line = qfl_df['text'][x: x+1].text.values.tolist()[0]
print(line) 从打印信息上看出错的行表面上是: '楚季者、王子敖之曾孙也。蚠冒主章者,王子无钧也。令尹孙叔敖者、章之子也。左司马戍者、庄王之曾孙也。叶公诸梁者、戍之第三弟也。楚大夫申无畏者,又氏文氏。\n
jieba.lcut(line)的结果 看起来是正常的, 不会出现似空非空的东西
这一段话的原文是: '楚季者、王子敖之曾孙也。蚠冒主蒍章者,王子无钧也。令尹孙叔敖者、蒍章之子也。左司马戍者、庄王之曾孙也。叶公诸梁者、戍之第三弟也。楚大夫申无畏者,又氏文氏。\n'
我做了繁简转换后,记录对应关系,后期只使用简体的line:

line = zhconv.convert(origi_line, 'zh-hans')
[print(x,x.encode(), "AAAA") for x in line]

楚 b'\xe6\xa5\x9a' AAAA
季 b'\xe5\xad\xa3' AAAA
者 b'\xe8\x80\x85' AAAA
、 b'\xe3\x80\x81' AAAA
王 b'\xe7\x8e\x8b' AAAA
子 b'\xe5\xad\x90' AAAA
敖 b'\xe6\x95\x96' AAAA
之 b'\xe4\xb9\x8b' AAAA
曾 b'\xe6\x9b\xbe' AAAA
孙 b'\xe5\xad\x99' AAAA
也 b'\xe4\xb9\x9f' AAAA
。 b'\xe3\x80\x82' AAAA
蚠 b'\xe8\x9a\xa0' AAAA
冒 b'\xe5\x86\x92' AAAA
主 b'\xe4\xb8\xbb' AAAA
 b'\xf0\xab\x87\xad' AAAA
章 b'\xe7\xab\xa0' AAAA
者 b'\xe8\x80\x85' AAAA
, b'\xef\xbc\x8c' AAAA
王 b'\xe7\x8e\x8b' AAAA
子 b'\xe5\xad\x90' AAAA
无 b'\xe6\x97\xa0' AAAA
钧 b'\xe9\x92\xa7' AAAA
也 b'\xe4\xb9\x9f' AAAA
。 b'\xe3\x80\x82' AAAA
令 b'\xe4\xbb\xa4' AAAA
尹 b'\xe5\xb0\xb9' AAAA
孙 b'\xe5\xad\x99' AAAA
叔 b'\xe5\x8f\x94' AAAA
敖 b'\xe6\x95\x96' AAAA
者 b'\xe8\x80\x85' AAAA
、 b'\xe3\x80\x81' AAAA
 b'\xf0\xab\x87\xad' AAAA
章 b'\xe7\xab\xa0' AAAA
之 b'\xe4\xb9\x8b' AAAA
子 b'\xe5\xad\x90' AAAA
也 b'\xe4\xb9\x9f' AAAA
。 b'\xe3\x80\x82' AAAA
左 b'\xe5\xb7\xa6' AAAA
司 b'\xe5\x8f\xb8' AAAA
马 b'\xe9\xa9\xac' AAAA
戍 b'\xe6\x88\x8d' AAAA
者 b'\xe8\x80\x85' AAAA
、 b'\xe3\x80\x81' AAAA
庄 b'\xe5\xba\x84' AAAA
王 b'\xe7\x8e\x8b' AAAA
之 b'\xe4\xb9\x8b' AAAA
曾 b'\xe6\x9b\xbe' AAAA
孙 b'\xe5\xad\x99' AAAA
也 b'\xe4\xb9\x9f' AAAA
。 b'\xe3\x80\x82' AAAA
叶 b'\xe5\x8f\xb6' AAAA
公 b'\xe5\x85\xac' AAAA
诸 b'\xe8\xaf\xb8' AAAA
梁 b'\xe6\xa2\x81' AAAA
者 b'\xe8\x80\x85' AAAA
、 b'\xe3\x80\x81' AAAA
戍 b'\xe6\x88\x8d' AAAA
之 b'\xe4\xb9\x8b' AAAA
第 b'\xe7\xac\xac' AAAA
三 b'\xe4\xb8\x89' AAAA
弟 b'\xe5\xbc\x9f' AAAA
也 b'\xe4\xb9\x9f' AAAA
。 b'\xe3\x80\x82' AAAA
楚 b'\xe6\xa5\x9a' AAAA
大 b'\xe5\xa4\xa7' AAAA
夫 b'\xe5\xa4\xab' AAAA
申 b'\xe7\x94\xb3' AAAA
无 b'\xe6\x97\xa0' AAAA
畏 b'\xe7\x95\x8f' AAAA
者 b'\xe8\x80\x85' AAAA
, b'\xef\xbc\x8c' AAAA
又 b'\xe5\x8f\x88' AAAA
氏 b'\xe6\xb0\x8f' AAAA
文 b'\xe6\x96\x87' AAAA
氏 b'\xe6\xb0\x8f' AAAA
。 b'\xe3\x80\x82' AAAA

b'\n' AAAA 
 终于抓到了几个    b'\xf0\xab\x87\xad'   b'\xf0\xab\x93\xa7' 这样的字符   好像decode转换不了成正常的中文:

In [1]:  b'\xf0\xab\x93\xa7'.decode()
Out[1]: ''In [2]:  b'\xf0\xab\x93\xa7'.decode('gbk')
Out[2]: '皤摟'In [3]:  b'\xf0\xab\x93\xa7'.decode('gb2312')
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-3-fb9788db8ccf> in <module>
----> 1 b'\xf0\xab\x93\xa7'.decode('gb2312')UnicodeDecodeError: 'gb2312' codec can't decode byte 0x93 in position 2: illegal multibyte sequence

试试 b'\xf0\xab\x93\xa7'.decode('gbk') 的结果是 '皤摟', 仍然不符合预期

刚开始以为是 zhconv 这个库不行,又换了一个opencc来转换, 还是同样的问题。那去源码看看/打印: 
opencc中 关键的self._dict_chain_data 打印结果部分如下 
'葯': '药',
'葷': '荤',
'蒍': '',
'蒐': '搜',
'蒓': '莼',
'蒔': '莳',
'蒕': '蒀',
'蒙': '蒙',
'蒞': '莅',
'蒭': '',
'蒼': '苍',
'蓀': '荪',
'蓆': '席',
'蓋': '盖',
'蓧': '',
'蓮': '莲',
'蓯': '苁',
'蓴': '莼',
'蓽': '荜',
 
 这个转换关系 是在字典中的, 比如上面的来自这个文件 opencc\dictionary\TSCharacters.txt :(windows下用notpad打开看到):
葤    荮
葦    苇
葯    药
葷    荤
蒍    

看起来为空的字符串,长度却是1?相关推荐

  1. java 字符串为空和字符串长度为0的区别?

    1.在java中,null字符串指的是字符串对象连内存都不占用, 就如同: String str; str不指向任何对象,即不指向任何内存地址,此即为null 2.而长度为0的字符串是存在内存空间的, ...

  2. 重复子字符串(给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。)

    给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000.   示例 1: 输入: "abab" 输出: True ...

  3. Go 学习笔记(31)— 字符串 string、字符 rune、字节 byte、UTF-8 和 Unicode 区别以及获取字符串长度

    1. 字符串 string 类型 Go 语言中字符串的内部实现使用 UTF-8 编码,通过 rune 类型,可以方便地对每个 UTF-8 字符进行访问.当然, Go 语言也支持按照传统的 ASCII ...

  4. python获取输入框内容长度_python3 tkinter 获取输入字符串长度

    python 3  获取输入字符长度 #-*- coding:utf-8 -*- from tkinter import * from tkinter import messagebox def ge ...

  5. strlen、sizeof与size()求字符串长度的区别

    strlen.sizeof与size()求字符串长度的区别 cout<<strlen("123")<<endl; //返回 3 cout<<si ...

  6. python字符串长度补齐_Python补齐字符串长度的实例

    Python字符串有没有字符串长度方法 name[1:-2:-2]表示从第2个字符(参数1)开始,往回(左)数每两个字符取一个(第三个参数-2),结束于倒数第三个字符(第二个参数-2),由于结束位置在 ...

  7. Linux下判断字符串长度

    方法1:使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. echo 'abc' |wc -L 注意:这 ...

  8. 二维字符数组按长度排序_字符串长度 字符数组长度

    1.不带转义字符的字符 如:"abc!x=/",其长度为 7 2.带转义字符的字符串 (1) 字符串"abcn":其中的'n'为转义字符(换行符),计算字符串长 ...

  9. python返回字符串长度的函数_Python如何查找字符串的长度?(代码示例)

    在Python中字符串是Unicode代码点的不可变序列.给定一个字符串,我们如何查找它的长度?本篇文章就来给大家介绍在Python中查找字符串长度的四种方法,希望对大家有所帮助.[相关视频教程推荐: ...

最新文章

  1. PMP考试资料:这个项目值得去做吗
  2. 金山笔试题-字符串排序 : 写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理...
  3. 【进阶2-3期】JavaScript深入之闭包面试题解
  4. 华为公开“一种芯片堆叠封装及终端设备”专利
  5. 我爱你们,我的家人和朋友
  6. 泰克示波器截屏软件-Tektronix示波器上位机-OpenChoice安装。示波器波形发文章论文
  7. 李开复《纽约时报》专栏:美国对中国AI的几大误解
  8. python如何处理文本文件_python如何选择合适的异常处理方式?
  9. skimage读取不到图片会报错 cv2读取不到图片返回None
  10. android与php mysql_手把手教你android通过PHP操作Mysql(1)
  11. Matlab入门基础思维导图
  12. mysql世界国家省市地区的信息中英文
  13. JavaScript模拟出一个input用于添加本地文件
  14. [蓝桥杯][算法提高VIP]盾神与砝码称重
  15. 许三多和他的基金定投
  16. python 高德/百度/腾讯/谷歌API 与WGS84坐标互转(BD09/GCJ02/WGS84)
  17. 银河麒麟操作系统以root用户登录的方法
  18. php同时抢购 代码,PHP秒杀抢购问答题解决方案
  19. 向 Excel 和 PowerPoint 添加可编辑地图的指南
  20. 条码软件为什么要有等级要求(A级条码)

热门文章

  1. Windows安装Dlib库失败解决
  2. IFR报告显示过去五年全球工业机器人销量翻番
  3. 使用Jason's Utter Ramblings Repo的yum源出现warning: rpmt
  4. OPENWRT MWAN3 负载均衡验证
  5. 只有毅力和决心无往不利
  6. TI DSP TMS320F28335 CCS初级踩坑
  7. 2.linux_进程编程
  8. scala中的breakable{}实现continu 与break
  9. 学习微信小程序开发框架之脚本语言WXS
  10. Fyne 折腾手记:开发一个简易桌面应用