自学编程学java还是python好 少儿编程自学python还是scratch
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
2018-06-22 字符串和正则表达式小练习
试题1:
下面哪个个字符串定义有错误?
A,r'C:Program Filesfoobar'B,r'C:Program Filesfoobar'C, r'C:Program Filesfoobar'D,r'C:Program Filesfoobar\'
参考答案:B
试题2:
现有 类似'【【微信】】快速入门教程2数值与序列3列表'的字符串,字符规则如下:1,行首有英文或数字组合,中间有中文,后面又有英文或数字组合2, 要求用正则表达式提取第一个中文字段,比如上面的“快速入门教程”
参考答案
#!pythonIn?[1]:?import?re In?[2]:?t?=?'【【微信】】快速入门教程2数值与序列3列表'In?[3]:?re.findall('^w+(..*?)w+',t,?re.ASCII) Out[3]:?['快速入门教程']2018-06-15 睁闭眼数据分析
现有如下睁闭眼数据
#!python$?head?data.csv? #?左眼睁闭眼分数?左眼有效分数?右眼睁闭眼分数?右眼有效分数?图片名称0.123603?9.835913?9.470212?9.889045,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/1.jpg0.179463?9.816979?2.074970?9.901421,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/10.jpg0.673736?9.925372?0.001438?9.968187,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/11.jpg0.593570?9.905622?0.001385?9.986063,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/12.jpg0.222101?9.974337?0.005272?9.985535,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/13.jpg1.105360?9.978926?0.007232?9.986403,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/14.jpg5.622934?9.955227?5.909572?9.969641,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/15.jpg0.010507?9.965939?0.005150?9.990325,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/16.jpg0.043546?9.986520?0.014031?9.982257,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/17.jpg6.176013?9.848222?4.293341?9.929223,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/18.jpg
要求:
筛选出未识别到人脸的数据(左眼睁闭眼分数值为-1)
筛选出图片格式错误的数据(左眼睁闭眼分数值为-2)
筛选出闭眼识别为睁眼的数据(图片名包含close,但是睁闭眼有一个大于9.5)
筛选出睁眼识别为闭眼的数据(图片名包含open,但是睁闭眼都小于9.5)
筛选出无效识别为有效的数据(图片名包含invalid,但是有效分有一个大于9.5)
筛选出有效识别为无效的数据(图片名包含valid,但是有效分都小于9.5)
创建如下的三色图片,像素600*400
dutchflag.jpg
python图像处理参考库
#!/usr/bin/env?【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-12#?dutchflag.pyfrom?PIL?import?Imagedef?dutchflag(width,?height): """Return?new?image?of?Dutch?flag.""" img?=?Image.new("RGB",?(width,?height))for?j?in?range(height):for?i?in?range(width):if?j?<?height/3: img.putpixel((i,?j),?(255,?0,?0))elif?j?<?2*height/3: img.putpixel((i,?j),?(0,?255,?0))else: img.putpixel((i,?j),?(0,?0,?255))return?imgdef?main(): img?=?dutchflag(600,?400) img.save("dutchflag.jpg") main()2018-06-12 数据分析:筛选列B包含列A内容的列
来自群python数据分析人工智能 521070358的提问
有类似如下结构的大量数据
#!python{'A':['Ford',?'Toyota',?'Ford','Audi'],? ?'B':['Ford?F-Series?pickup',?'Camry',?'Ford?Taurus/Taurus?X',?'Audi?test']}
现在想:
1,输出列B包含列A内容的记录
2,输出列A为Ford或Toyota的记录
参考代码:
#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-012import?pandas?as?pddef?test(x): if?x['A']?in?x['B']:return?True else:return?Falsedf?=?pd.Dataframe(?{'A':['Ford',?'Toyota',?'Ford','Audi'],? 'B':['Ford?F-Series?pickup',?'Camry',?'Ford?Taurus/Taurus?X',?'Audi?test']}?) print(df)#?输出列B包含列A内容的记录print(df[df.apply(test,?axis=1)])#?lambda?方式print(df[df.apply(lambda?x:?x['A']?in?x['B'],?axis=1)])#?输出列A为Ford或Toyota的记录print(df[df['A'].str.match('Ford|Toyota')])
执行结果:
#!python A?B 0FordFord?F-Series?pickup 1Toyota?Camry 2FordFord?Taurus/Taurus?X 3Audi?Audi?test A?B 0FordFord?F-Series?pickup 2FordFord?Taurus/Taurus?X 3Audi?Audi?test A?B 0FordFord?F-Series?pickup 2FordFord?Taurus/Taurus?X 3Audi?Audi?test A?B 0FordFord?F-Series?pickup 1Toyota?Camry 2FordFord?Taurus/Taurus?X
本节代码地址
2018-06-11 python数据机构基础面试题生成
#!python[-0.1,0.?,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.?,1.1]
参考:
#!pythonimport?numpy?as?np [x?/?10.0?for?x?in?range(-1,?11)] np.arange(-0.1,?1.1,?0.1)2018-06-08 用turtle绘制长度为10像素的正方形(初级)
image.png
参考代码:
#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-07from?turtle?import?* ? forward(100) left(90) forward(100) left(90) forward(100) left(90) forward(100) left(90) exitonclick()
注意用使用【【微信】】.6.0或更高版本, 命令行执行比较好。
延伸学习
image.png
参考代码:
#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-07from?turtle?import?* pensize(7) penup()goto(-200,?-100) pendown() fillcolor("red") begin_fill()goto(-200,?100)goto(200,?-100)goto(200,?100)goto(-200,?-100) end_fill() exitonclick()2018-06-07 计算不同版本人脸识别框的重合面积
现有某图片,版本1识别的坐标为:(60, 188, 260, 387),版本2识别的坐标为(106, 291, 340, 530)))。格式为left, top, right, buttom。
请计算:公共的像素总数,版本1的像素总数,版本2的像素总数,版本1的重合面积比例,版本2的重合面积比例.
参考代码:
#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-07def?get_area(pos): left,?top,?right,?buttom?=?pos left?=?max(0,?left) top?=?max(0,?top) width?=?right?-?left height?=?buttom?-?topreturn?(width*height,?left,?top,?right,?buttom)def?overlap(pos1,?pos2): area1,?left1,?top1,?right1,?buttom1?=?get_area(pos1) area2,?left2,?top2,?right2,?buttom2?=?get_area(pos2) left?=?max(left1,?left2) top?=?max(top1,?top2) left?=?max(0,?left) top?=?max(0,?top) right?=?min(right1,?right2)? buttom?=?min(buttom1,?buttom2) if?right?<=?left?or?buttom?<=?top: area?=?0 else: area?=?(right?-?left)*(buttom?-?top) return?(area,?area1,?area2,?float(area)/area1,?float(area)/area2) print(overlap((60,?188,?260,?387),?(106,?291,?340,?530)))
详细代码地址
执行
#!python$?【【微信】】?overlap.py? (14784,?39800,?55926,?0.3714572864321608,?0.2643493187426242)2018-06-06 json格式转换
现有 人脸标注的海量数据,部分参见:data
要求输出:
1,files.txt
#!pythonimage_1515229323784.irimage_1515235832391.irimage_1515208991161.irimage_1515207265358.irimage_1521802748625.irimage_1515387191011.ir...
2, 坐标信息 poses.txt
文件名、left, top, right, buttom,width,height
#!pythonimage_1515229323784.ir,4,227,234,497,230,270image_1515235832391.ir,154,89,302,240,148,151image_1515208991161.ir,76,369,309,576,233,207image_1515207265358.ir,44,261,340,546,296,285 ...
3,比对文件:
首先:# 后面的为序列号,从1开始递增
3 640 480 1及后面3行暂时视为固定。后面一行1 后面为4个坐标left, top, right, buttom。
#!python#?1image_1515229323784.ir 3?640?480?1 0 1 1?4?227?234?497? #?2image_1515235832391.ir 3?640?480?1 0 1 1?154?89?302?240#?3...
参考代码:
#!python#!/usr/bin/env?【【微信】】#?-*-?coding:?utf-8?-*-import?shutilimport?osimport?globimport?jsonimport?pprintimport?jsonimport?data_common directory?=?'data'files?=?data_common.find_files_by_type(directory,'json') i?=?1file_list?=?[] results?=?[] poses?=?[]for?filename?in?files: d?=?json.load(open(filename)) name?=?d['image']['rawFilename'].strip('.jpg') pos?=?d['objects']['face'][0]['position'] num?=?len(d['objects']['face'])if?num?>?1: print(filename) print(name) pprint.pprint(d['objects']['face']) out?=?"#?{}n{}n3?640?480?1n0n{}n".format(i,?name,?num)for?face?in?d['objects']['face']: pos?=?face['position'] top?=?round(pos['top']) bottom?=?round(pos['bottom']) left?=?round(pos['left']) right?=?round(pos['right']) out?=?out?+?"1?{}?{}?{}?{}n".format(left,?top,?right,?bottom) poses.append("{},{},{},{},{},{},{}".format(name,? left,?top,?right,?bottom,?right?-?left,?bottom?-top)) i?=?i?+?1 #print(out) file_list.append(name) results.append(out.rstrip('n')) data_common.output_file("files.txt",file_list) data_common.output_file("results.txt",results) data_common.output_file("poses.txt",poses)
详细代码地址
2018-06-01 正则表达式及拼音排序有某群的某段聊天记录
现在要求输出排序的qq名,结果类似如下:
#!python[...,?'本草隐士',?'jerryyu',?'可怜的樱桃树',?'叻风云',?'欧阳-深圳白芒',...]
需求来源:有个想批量邀请某些qq群的活跃用户到自己的群。又不想铺天盖地去看聊天记录。
参考资料:python文本处理库
参考代码:
#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong@【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-1import?refrom?pypinyin?import?lazy_pinyin name?=?r'test.txt'text?=?open(name,encoding='utf-8').read()#print(text)results?=?re.findall(r'(:d+)s(.*?)(d+',?text) names?=?set()for?item?in?results: names.add(item[1]) keys?=?list(names) keys?=?sorted(keys)def?compare(char): try: result?=?lazy_pinyin(char)[0][0]except?Exception?as?e: result?=?charreturn?result keys.sort(key=compare) print(keys)
执行示例:
1,把qq群的聊天记录导出为txt格式,重命名为test.txt
2, 执行:
#!python$?【【微信】】?qq.py? ['Sally',?'^^O^^',?'aa催乳师',?'bling',?'本草隐士',?'纯中药治疗*早泄',?'长夜无荒',?'东方~慈航',?'干金草',?'广东-曾超庆',?'红梅*?渝',?'jerryyu',?'可怜的樱桃树',?'叻风云',?'欧阳-深圳白芒',?'傥籼谩元亨',?'蜀中~眉豆。',?'陕西渭南逸清阁*无为',?'吴宁……任',?'系统消息',?'于立伟',?'倚窗望岳',?'烟霞霭霭',?'燕子',?'张强',?'滋味',?'买个罐头?吃西餐',?'【大侠】好好',?'【大侠】面向大海~纯中药治烫伤',?'【宗师】吴宁……任',?'【宗师】红梅*?渝',?'【少侠】焚琴煮鹤',?'【少侠】笨笨',?'【掌门】溆浦山野人家']
作者:python作业AI毕业设计链接:https://www.jianshu.com/p/92c7bd0189d4
python机器学习库教程——结巴中文分词
结巴分词 python,结巴分词统计词频,结巴分词词性标注,结巴分词python安装全栈工程师开发手册 (作者:栾鹏)
python教程全解
安装:
特点:
支持三种分词模式:
精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 支持繁体分词 支持自定义词典 MIT 授权协议
算法:
基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 【【微信】】 算法
- jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
- jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
- 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK字符串,可能无法预料地错误解码成 UTF-8
- jieba.cut以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及jieba.lcut_for_search 直接返回list
- jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
- 使用jieba.posseg分词,可以查看分词的词性
代码示例
输出结果
添加自定义词典以便能识别专业词汇
载入词典
- 开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率
- 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
- 词典格式和 dict.txt一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
- 词频省略时使用自动计算的能保证分出该词的词频。
例如:
- 更改分词器(默认为jieba.dt)的 tmp_dir 和 cache_file属性,可分别指定缓存文件所在的文件夹及其文件名,用于受限的文件系统。
示例自定义词典userdict.txt
示例代码
输出结果
- 使用 【【微信】】(word, freq=None, tag=None)和 【【微信】】(word) 可在程序中动态修改词典。
- 使用 suggest_freq(【【微信】】une=True) 可调节单个词语的词频,使其能(或不能)被分出来。
- 注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。
示例代码
输出结果
基于 TF-IDF 算法的关键词抽取
示例代码
输出结果
基于 【【微信】】 算法的关键词抽取
示例代码
输出结果