[x for x in set(open("c:\\test.txt").read()) if 19968<=ord(x)<=40869]
使用Python可以实现一句话统计文章里的不重复汉字数,代码如上。
这一句话涉及到Python的许多基本概念,拆解着分析一下。
open("c:\\test.txt").read()
上面一句的样式和其它语言类似,都是打开一个文件,然后读其中的内容。路径的写法也是传统的两个反斜杠,双引号包含。Python里的单引号和双引号没有太多区别,成对使用即可。好处是当原始字符串里含有单引号或者双引号时,使用另一种包含可以省掉转义符,让字符串看起来更直接。当然Python也有不使用转义符的做法,就是在字符串前面加一个字母r,这样字符串里的所有转意字符全部无效,作用类似C#下的@。示例代码如下:
open('c:\\test.txt').read() open(r'c:\test.txt').read()
open是一个内建命令,带很多参数,除了文件路径需要指定外,别的都有默认值。常用的有mode,指定是读还是写等;encoding,指定文件的编码。
mode可以使用如下表达,并且可以叠加。
Character | Meaning |
'r' | open for reading (default) |
'w' | open for writing, truncating the file first |
'x' | open for exclusive creation, failing if the file already exists |
'a' | open for writing, appending to the end of the file if it exists |
'b' | binary mode |
't' | text mode (default) |
'+' | open a disk file for updating (reading and writing) |
'U' | universal newlines mode (for backwards compatibility; should not be used in new code) |
encoding需要指定,默认为None,实质上是使用系统默认的编码。常见的编码有:utf_8,gbk,ascii等。
示例如下:
open(r'c:\test.txt',mode='rt',encoding='gbk')
接下来看看open读出来的到底是个啥东西。默认为文本,则显示的类型为:
示例如下:
type(open(r'c:\test.txt',mode='rt',encoding='gbk')) <class '_io.TextIOWrapper'> type(1) <class 'int'> type(open) <class 'builtin_function_or_method'> type('1') <class 'str'>
open好一个文件后,跟着的是一个方法read()。现在可以清楚地看到read其实是TextIOWrapper这个类的一个方法,作用是将文件里的所有字符读成一个字符串。
到现在为止,open+read实现了把文件中所有的字符变成了一个字符串的效果。下面肯定是要筛除其中的重复部分和非汉字部分。对于筛除重复的字符,set()出场了。
set是一个类,简单讲就是一个没有value的字典,里面全是key。这样带来一个效果,set里面不会含有两个一样的数据。当然,扔进去重复的值,出来就不会重了。
示例如下:
set((1,2,2,3,4,5,6,8,333,55,55,6,7,7)) {1, 2, 3, 4, 5, 6, 7, 8, 333, 55} set("123444lksdjflkajdsf8324u7") {'8', '1', '3', '2', 'u', '4', '7', 'd', 'k', 'j', 'l', 'a', 's', 'f'}
(1,2,3,4,3)这样的形式在Python中称为tuple,中文称为元祖,简单讲就是不可变的数据集合。把元祖丢到set里,出来的是一个set的集合,重复的被剔掉了。Python里没有char这个概念,只有str,char就是只有一个字符的str。字符串也是集合,自然也可以丢到set里。注意set是散列的,不能保持顺序,不能用在顺序敏感的地方。
提到tuple,顺便说下tuple在Python下的小用法。典型的交换2个数,别的语言差不多都是创建一个swap变量进行。Python里则太简单了,示例如下:
a,b=1,2
(a,b)=(b,a)
歪了,说回来。接下来看整个语句外面的[]。这个东西叫list,和刚才说的tuple类似,但是是可变的,和c#里的arraylist类似,但是功能则更强大。Python提供了内置方法list()来方便地创建和转换列表。以下是list的简单用法:
list((1,2,3)) #return [1, 2, 3] list('aabc') #return ['a', 'a', 'b', 'c'] L=list(('a','b','c')) L.append(1) #return ['a','b','c',1] L.extend((1,2)) #return ['a','b','c',1,1,2] L.insert(0,100) #return [100,'a','b','c',1,1,2] L.pop() #return 2 L #return [100,'a','b','c',1,1]
都是很普通的功能,需要注意的一个是pop()的方法。直接使用pop()会返回list的最后一个值,然后更新该list。pop()可以带参数运行,形如pop(index),表示剔除且对应index位的值,然后更新该list。这样就可以实现一些特殊用法,FIFO和FILO。pop()实现FIFO,pop(0)实现FILO。
list最值得说的是列表表达式,许多别的语言要几句话实现的功能,Python一句话就可以搞定,依靠的就是列表表达式。举个最简单的例子,从一堆数里面把奇数挑出来。c#里面依靠list<>和lambda也可以完成,但是Python更灵活,更轻量级。
[x for x in (1,2,3,4,5,6,7) if x%2!=0] #return [1,3,5,7]
首先整个过程是在[]里进行的,最后输出的也是一个list。整个列表是[x],之后紧接着的形如for x in range()的样式,其实和别的语言里的foreach一样,把整个区域里的值循环一遍,每读一个range里的值,就添加到[]里。最后是一个if语句,对每次读出的值做个判断,符合要求的才添加到list里,不符合的抛弃。
列表表达式里的for是可以嵌套的,实现更加复杂的运算,当然还是在一句话里。好,在做相对复杂的演示之前,介绍一个内置方法:range()。
range(5) #return range(0,5) range(1,2) #return range(1,2) list(range(5)) #return [0,1,2,3,4]
很简单,下面演示一个打印50内所有的勾股数的列表表达式:
[(x,y,z) for x in range(1,51) for y in range(x,51) for z in range(y,51) if z**2==x**2+y**2] #return [(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (9, 40, 41), (10, 24, 26), (12, 16, 20), (12, 35, 37), (14, 48, 50), (15, 20, 25), (15, 36, 39), (16, 30, 34), (18, 24, 30), (20, 21, 29), (21, 28, 35), (24, 32, 40), (27, 36, 45), (30, 40, 50)]
好,现在回头看这句话应该非常简单了。
[x for x in set(open("c:\\test.txt").read())]
这个列表表达式就是把test.txt里所有的不重复字符全部加到一个列表里了。目标是获取不重复汉字,那么得找到判断汉字的方法。Python内置了一个方法叫ord(),能将字符转换成unicode的编号。再google下,知道了汉字的区域基本在19968和40869之间。那就搞定了,ord()一下再加一个if就好了。顺便介绍下,Python支持比较直观的比较语法,基本和人类交流语言差不多:
x,y,z=1,2,3 x#return true。 It equls x
最终再看一遍扯了一大堆的这句话:
[x for x in set(open("c:\\test.txt").read()) if 19968<=ord(x)<=40869]
这里只是把汉字列出来了,但是还得统计字数,再介绍一个内置方法len()。套到list,tuple啊,字符串上,就能显示长度啦。
这里使用少年天才蒋方舟小学三年级上学期就出版了的第一本书《打开天窗》作为样本,检测一下代码:
[x for x in set(open("c:\\test.txt").read()) if 19968<=ord(x)<=40869] '''['油', '伸', '嘲', '冷', '木', '莫', '庭', '辣', '丢', '榧', '缘', '夜', '吞', '怖', '钉', '圈', '王', '市', '妇', '堆', '读', '防', '楼', '音', '偶', '杨', '扪', '续', '占', '赤', '婚', '眨', '染', '友', '削', '仍', '胁', '心', '政', '宰', '爵', '茫', '鸭', '累', '梦', '笛', '踢', '生', '树', '吉', '不', '老', '词', '弃', '备', '领', '死', '虽', '盲', '牵', '间', '具', '摩', '叠', '跤', '忘', '姜', '巨', '桑', '胖', '里', '赏', '奇', '游', '欺', '格', '放', '露', '琴', '然', '昨', '披', '挪', '讥', '钟', '遥', '蚓', '压', '脖', '拦', '射', '淹', '驰', '其', '早', '晨', '凡', '代', '该', '侃', '摔', '陈', '半', '灌', '济', '所', '练', '费', '论', '失', '阳', '措', '加', '定', '颜', '易', '耗', '唉', '伍', '涎', '愁', '技', '布', '石', '妆', '饱', '卵', '偷', '凶', '扫', '揪', '差', '狠', '恶', '步', '默', '位', '鳄', '姆', '显', '傻', '制', '怪', '茬', '帮', '务', '趣', '伤', '或', '舒', '与', '弄', '宇', '座', '晾', '饰', '僵', '号', '渴', '聪', '狡', '给', '瑞', '惕', '太', '乎', '层', '篇', '婆', '丹', '落', '娱', '状', '审', '弯', '冠', '责', '欧', '宜', '土', '蔓', '撒', '怕', '抖', '厌', '漏', '于', '膀', '龄', '板', '曾', '称', '哲', '灵', '卷', '旨', '脚', '牡', '几', '波', '桥', '回', '柔', '拖', '克', '双', '住', '从', '扁', '边', '永', '施', '箱', '砰', '咳', '甲', '况', '阴', '般', '纯', '造', '财', '两', '龙', '尘', '多', '喝', '合', '亏', '怀', '馅', '迹', '替', '松', '扬', '置', '赢', '警', '忙', '非', '译', '苗', '呈', '牌', '低', '席', '冬', '碰', '爷', '抬', '微', '交', '窜', '队', '搓', '眉', '针', '熊', '持', '庄', '声', '味', '闲', '兵', '直', '叶', '自', '括', '卡', '令', '详', '揖', '哈', '释', '迎', '组', '密', '为', '抽', '喷', '肩', '茨', '墙', '帚', '劝', '熟', '戒', '蚕', '斗', '型', '最', '它', '处', '将', '拽', '右', '牲', '兴', '送', '积', '确', '以', '存', '扒', '旗', '午', '埋', '界', '杀', '根', '许', '人', '愿', '就', '劲', '阵', '男', '推', '末', '欣', '严', '货', '官', '民', '辐', '酱', '选', '看', '掀', '骂', '帅', '崇', '轻', '腿', '山', '即', '痴', '恩', '酷', '壮', '正', '运', '又', '益', '幅', '递', '肿', '脾', '劳', '未', '箭', '搬', '珠', '欢', '账', '香', '娘', '丐', '抓', '枕', '同', '待', '鲇', '任', '腾', '己', '鹰', '止', '黛', '罚', '逼', '烟', '跑', '乐', '荒', '联', '凉', '版', '母', '旁', '魂', '必', '主', '憾', '玲', '枪', '烽', '润', '鲜', '借', '源', '排', '悔', '和', '娃', '缅', '预', '凌', '泼', '史', '拨', '虫', '因', '裤', '高', '浑', '打', '著', '光', '谓', '售', '似', '决', '猴', '阶', '本', '唠', '蠢', '侧', '尚', '原', '云', '怒', '撕', '林', '吊', '蚁', '攀', '堂', '豺', '能', '找', '凳', '却', '择', '缠', '解', '泥', '此', '蹦', '站', '滑', '赐', '勉', '先', '告', '棍', '每', '秃', '活', '傲', '吵', '认', '亦', '鹿', '办', '丑', '朗', '暖', '锋', '绑', '庆', '诏', '拾', '关', '零', '秘', '狞', '居', '细', '治', '贺', '嚷', '怨', '产', '伦', '宙', '功', '暗', '玉', '咋', '极', '悲', '拿', '雷', '恨', '端', '车', '异', '凝', '近', '扔', '啊', '房', '弱', '冲', '电', '滔', '您', '败', '题', '休', '喊', '植', '约', '骄', '歹', '裸', '跺', '承', '影', '陷', '惨', '葫', '饭', '篮', '睡', '思', '衣', '孙', '飘', '懒', '拔', '烈', '忆', '横', '疯', '报', '玛', '刚', '输', '粉', '宋', '梁', '垃', '艺', '份', '印', '干', '头', '毫', '园', '嗯', '若', '绝', '兜', '属', '荐', '乒', '赔', '姑', '踪', '藏', '裁', '采', '丽', '现', '辨', '唯', '鼠', '宠', '斤', '愧', '悦', '猛', '帝', '农', '掐', '袖', '很', '善', '台', '巴', '祷', '壶', '藤', '慧', '剩', '提', '体', '屉', '筋', '敏', '方', '挺', '派', '到', '纳', '鞭', '键', '稠', '接', '疙', '嘘', '力', '成', '气', '师', '要', '言', '厅', '各', '追', '绳', '饶', '歪', '短', '衬', '胧', '博', '停', '糟', '仓', '试', '立', '塌', '见', '改', '贩', '启', '疮', '挥', '撤', '性', '错', '厚', '缝', '脑', '专', '程', '服', '垂', '包', '共', '狰', '平', '浩', '问', '章', '留', '盘', '牛', '廊', '拐', '乓', '街', '终', '哄', '遇', '准', '便', '举', '娶', '骡', '肥', '控', '隙', '甘', '军', '通', '猜', '龟', '脐', '演', '馋', '明', '分', '兰', '究', '滩', '哭', '做', '卜', '腐', '诗', '廉', '始', '操', '柏', '虎', '馆', '肺', '掼', '爱', '冰', '堵', '吭', '眯', '皮', '急', '茧', '芦', '尝', '我', '蠕', '完', '瞄', '虹', '汽', '减', '使', '页', '筷', '目', '散', '捧', '苦', '绞', '扑', '浓', '奋', '磊', '富', '啃', '升', '亿', '被', '管', '厉', '废', '耐', '洒', '且', '璃', '内', '匆', '摸', '仿', '灰', '年', '俩', '闭', '盯', '寡', '敢', '员', '烛', '统', '恐', '屈', '李', '血', '铃', '附', '勇', '总', '达', '家', '垮', '逛', '挑', '氓', '五', '殖', '验', '吃', '喂', '的', '切', '历', '拼', '湿', '米', '已', '维', '穷', '佩', '注', '矮', '董', '既', '静', '仔', '啪', '嫌', '检', '充', '雄', '片', '蔼', '钱', '地', '害', '纵', '离', '辫', '个', '逮', '张', '愤', '鬼', '窝', '甜', '律', '芍', '怎', '理', '惹', '智', '意', '遮', '父', '旧', '矛', '镜', '塞', '材', '拍', '兄', '呆', '吱', '讨', '炮', '挣', '抢', '春', '候', '厘', '喜', '够', '增', '洗', '守', '床', '舍', '脏', '谁', '阅', '揸', '西', '海', '忠', '捣', '拢', '擦', '变', '睛', '祟', '飞', '某', '绊', '才', '胎', '激', '千', '狂', '际', '镇', '哆', '机', '讽', '媳', '破', '污', '享', '伪', '荣', '写', '刘', '宝', '碟', '斑', '誓', '趁', '一', '瓦', '痱', '念', '坛', '班', '兮', '换', '查', '四', '坚', '食', '神', '赖', '揍', '勃', '哇', '商', '唱', '稳', '纠', '探', '嘛', '妞', '蔑', '津', '谗', '羊', '洁', '困', '灯', '扣', '来', '筝', '瓜', '救', '何', '汗', '奉', '流', '什', '剃', '参', '抹', '脸', '醒', '访', '皱', '唰', '德', '环', '刮', '素', '挤', '额', '暑', '世', '尊', '掏', '苹', '并', '汪', '热', '转', '可', '痛', '如', '察', '法', '身', '俗', '乖', '嫉', '祈', '描', '扎', '仁', '铅', '陆', '船', '攻', '栽', '嘱', '鸡', '愣', '众', '妈', '聊', '耍', '丁', '震', '隆', '批', '女', '彷', '泪', '书', '狮', '牙', '竞', '虑', '棒', '汕', '比', '他', '糊', '捏', '元', '烂', '盆', '昼', '款', '康', '让', '坡', '沫', '洪', '犯', '朦', '咛', '椒', '涕', '安', '希', '皇', '圆', '瑰', '壳', '驴', '表', '浪', '蹬', '慢', '日', '竟', '仗', '病', '设', '京', '护', '草', '实', '嬉', '戏', '莎', '逃', '锅', '胸', '曼', '课', '豫', '跪', '六', '们', '副', '叮', '祝', '真', '村', '角', '等', '屋', '彪', '畅', '缸', '礼', '玻', '耶', '在', '玫', '爪', '涯', '股', '沙', '优', '搞', '月', '较', '寻', '空', '国', '饼', '柳', '整', '哩', '叫', '剪', '公', '路', '胡', '幢', '童', '毛', '曝', '子', '绍', '慌', '屎', '郁', '促', '资', '记', '吩', '猫', '努', '中', '熬', '贯', '红', '娥', '大', '导', '撞', '盾', '把', '珍', '白', '锐', '长', '链', '遵', '曲', '惶', '卫', '蹭', '还', '塑', '盒', '常', '唾', '阻', '猪', '尤', '碧', '补', '嚓', '厕', '由', '而', '刀', '漂', '幸', '帽', '器', '形', '乘', '科', '青', '瓶', '忍', '仃', '诅', '纸', '疾', '甩', '别', '抠', '鸣', '鲤', '朝', '袜', '匕', '咔', '逗', '小', '七', '标', '覆', '寺', '雨', '只', '顶', '付', '单', '遗', '手', '菊', '背', '泄', '视', '纹', '妻', '笼', '瘾', '获', '用', '侯', '骑', '餐', '梅', '移', '顺', '矿', '百', '蝴', '嘴', '仙', '蓝', '嗓', '受', '求', '装', '难', '樱', '登', '瘩', '邪', '伯', '亮', '群', '萝', '期', '咒', '北', '掌', '式', '爆', '命', '族', '图', '险', '门', '八', '软', '嫦', '淘', '棚', '束', '姐', '南', '惊', '净', '歇', '示', '喽', '圾', '爬', '索', '贾', '化', '躲', '鼎', '晴', '矩', '周', '烫', '潮', '握', '姥', '学', '这', '楚', '狗', '卖', '经', '弹', '阿', '罕', '暴', '户', '购', '犬', '港', '侮', '挡', '肠', '伙', '星', '笑', '吓', '隔', '列', '有', '膊', '美', '邀', '调', '涂', '椅', '掰', '须', '敲', '涅', '更', '哨', '火', '独', '修', '捡', '惠', '奥', '余', '痒', '取', '恋', '鹏', '十', '识', '倾', '轮', '垫', '唬', '宣', '辛', '业', '芝', '澈', '划', '疗', '悉', '窍', '福', '需', '武', '溅', '翻', '灾', '轰', '色', '矫', '巧', '裙', '进', '齐', '兔', '敌', '品', '着', '仅', '襄', '豆', '鼻', '儿', '昵', '厨', '紧', '亚', '感', '少', '徐', '朋', '蚊', '稍', '夏', '清', '项', '寸', '彻', '建', '致', '叨', '雪', '森', '季', '佛', '滚', '屑', '奏', '风', '久', '规', '妹', '麻', '缺', '尼', '丰', '芳', '收', '训', '听', '梯', '映', '堤', '些', '会', '帐', '途', '钗', '箍', '萌', '械', '辅', '鱼', '深', '买', '语', '刷', '橘', '适', '哗', '镖', '蛋', '贱', '戳', '莲', '朵', '动', '瞪', '咬', '客', '弥', '丛', '挝', '吗', '遭', '她', '幻', '避', '仰', '艳', '啥', '时', '左', '嘟', '呗', '雀', '汇', '夸', '尺', '助', '袭', '鸦', '霉', '肝', '舞', '倒', '销', '竹', '祸', '都', '走', '至', '全', '睬', '误', '孤', '作', '黑', '拉', '慈', '摊', '雁', '桂', '过', '育', '魔', '利', '咪', '湖', '室', '度', '洛', '炒', '砍', '喀', '谅', '了', '乱', '围', '物', '哪', '无', '怜', '赛', '远', '损', '叔', '块', '盖', '筏', '评', '潇', '容', '砸', '势', '猾', '戴', '尔', '玩', '荡', '颗', '级', '东', '掉', '蒋', '超', '漆', '对', '系', '幼', '胳', '蝶', '番', '工', '继', '泛', '赚', '捞', '酒', '想', '盗', '揉', '种', '呀', '仇', '但', '耳', '架', '含', '议', '蜡', '婶', '溜', '舟', '冒', '聋', '按', '复', '省', '概', '万', '辆', '类', '兽', '泰', '部', '鑫', '闪', '条', '奶', '网', '道', '噗', '黄', '捉', '睁', '哀', '桃', '观', '霸', '去', '刺', '纽', '尾', '澳', '串', '贴', '岩', '宫', '斯', '欠', '锤', '蒙', '戚', '趟', '砖', '沉', '残', '樊', '后', '牺', '兼', '蹲', '桶', '旯', '保', '院', '啤', '跟', '泉', '凑', '担', '吹', '医', '鸽', '精', '毕', '亲', '趴', '支', '撮', '校', '圣', '祖', '疤', '邦', '抚', '丝', '负', '蹈', '瀑', '鼓', '辈', '码', '简', '蚂', '行', '勺', '幽', '供', '督', '团', '照', '烦', '九', '当', '绒', '套', '汉', '降', '哎', '灭', '权', '胆', '瘸', '区', '值', '段', '水', '料', '肉', '抛', '依', '洞', '库', '箕', '鞋', '碗', '外', '丈', '禁', '稀', '蜂', '脆', '闹', '忽', '诵', '硬', '奸', '带', '面', '句', '烧', '招', '违', '赞', '金', '结', '归', '奖', '么', '桌', '私', '杂', '摄', '刻', '炼', '尿', '脱', '样', '罗', '妖', '相', '巾', '衷', '旮', '教', '惜', '江', '狐', '晃', '集', '蓄', '甸', '债', '粽', '羿', '耸', '花', '足', '伴', '堪', '播', '第', '枯', '首', '滥', '算', '争', '突', '搂', '畸', '击', '英', '慰', '跳', '棵', '请', '绩', '纷', '普', '楠', '呢', '蛙', '迟', '乞', '磕', '响', '歌', '嫁', '情', '尽', '咦', '夫', '搭', '术', '模', '锣', '钢', '肚', '伟', '三', '消', '名', '威', '者', '指', '养', '齿', '铁', '杯', '蛮', '橡', '健', '卧', '菜', '翔', '字', '竖', '义', '坏', '秀', '吸', '邻', '线', '河', '临', '躺', '断', '蚯', '计', '愚', '伞', '窗', '辉', '谈', '袋', '随', '培', '僻', '绿', '恰', '泳', '退', '士', '马', '诡', '瓣', '除', '距', '发', '棋', '霆', '捆', '液', '讶', '缩', '是', '次', '贝', '辞', '应', '栋', '瞎', '出', '狼', '广', '惰', '滴', '婴', '彩', '填', '入', '剧', '另', '拜', '也', '连', '假', '城', '扇', '点', '芭', '没', '传', '否', '底', '尖', '抱', '例', '上', '岁', '开', '坦', '文', '骗', '啼', '姿', '顾', '杰', '快', '泡', '你', '口', '呦', '晚', '坐', '奔', '量', '摆', '稽', '疼', '贷', '纪', '侠', '唧', '钦', '望', '斜', '向', '涌', '往', '范', '节', '司', '饿', '葱', '起', '扭', '象', '银', '凤', '哦', '幕', '委', '糖', '诈', '今', '前', '郎', '屁', '爸', '场', '宽', '吼', '社', '欲', '拥', '宗', '肯', '劣', '战', '疑', '研', '粗', '事', '挂', '呼', '赶', '罪', '惯', '腮', '淡', '习', '知', '哧', '啦', '托', '话', '筒', '觉', '介', '反', '像', '俐', '捂', '躬', '嘻', '讲', '天', '骨', '循', '怯', '吧', '折', '蒜', '隐', '引', '下', '貌', '透', '腰', '掂', '悄', '狸', '噻', '基', '哼', '顿', '曰', '诲', '息', '驶', '嗦', '鹅', '录', '之', '俊', '偏', '摇', '犹', '馒', '眼', '蚱', '强', '逢', '瞧', '薛', '唐', '笔', '得', '谊', '傍', '酸', '闻', '寿', '驾', '数', '迷', '票', '惭', '扮', '满', '哥', '监', '姓', '糕', '答', '志', '擅', '画', '新', '紫', '果', '秋', '洋', '倍', '特', '妙', '说', '件', '姨', '药', '古', '柜', '彗', '遍', '协', '狎', '球', '钻', '良', '梳', '伶', '芯', '澡', '那', '判', '吐', '店', '编', '再', '猎', '征', '叹', '签', '柱', '践', '价', '轶', '孔', '臭', '拯', '据', '信', '池', '睦', '聘', '诉', '案', '重', '乌', '华', '翁', '局', '旅', '蛇', '炸', '吻', '稿', '宾', '朱', '贵', '墨', '咐', '妒', '谋', '越', '二', '配', '考', '抄', '好', '盼', '穿', '赵', '孩', '磨', '扯', '略', '臂', '弟', '坑', '歉', '免', '懂', '故']'''
再看下字数:
len([x for x in set(open("c:\\test.txt").read()) if 19968<=ord(x)<=40869]) 2011
这里可以看出,如果你家娃在上三年级的时候还不能认识这2011个字,更不要说熟练运用,更遑论被if过滤掉的英文单词、数字和标点符号,你家娃铁定是没希望成为天才了。做你的苦逼码农去吧!