python
文章平均质量分 84
夕秋一梦
莫失莫忘
展开
-
windows系统下使用 python -m json.tool 中文解析错误
目录问题:原因:解决办法: 问题: 上一篇已经了解到如何在 Linux 系统中使python -m json.tool 正常显示中文。 然后想测试下在windows环境下的使用情况: 发现初始情况和上一篇linux中遇到的情况一样,于是按着同样的方法修改程序: 再次测试: 发现中文显示还是有问题,但已经明显转为中文了,只是显示的不对。为了一探究竟,所以我将这个 tool.py 文件拷贝到了pycharm编辑器中,进行断点调试。 原因: 在pycharm中设置好参数:.原创 2021-01-20 15:31:49 · 527 阅读 · 3 评论 -
用一个csv格式的字符串创建dataframe对象
pandas提供了很多的方式去创建dataframe,例如接收字典,读取csv或excel格式文件。在读取本地文件的时候,可以直接调用读取csv的方法,但是多数情况下,csv文件是作为一种模型的训练数据存储在hdfs上,pandas是没有办法直接读取hdfs上的数据的,需要通过hdfs客户端从hdfs上读取文件内容,再想办法转为pandas的dataframe。之前用的两种方式: 一种是...原创 2020-03-25 15:48:39 · 1998 阅读 · 0 评论 -
pycharm 远程调试
idea远程调试在我之前的文章中已经记录过,https://blog.csdn.net/qq_39314099/article/details/103890498正好最近遇到个问题,本地不好运行,需要在linux下环境运行,于是开启虚拟机,进行远程调试。首先新建一个flask项目(普通的py文件也行)配置远程解释器:选择sftp类型,输入服务器信息,高级里面指定编码...原创 2020-03-24 15:20:00 · 254 阅读 · 0 评论 -
pandas 读取csv文件,再写入文件,产生超长小数位数问题
python中的浮点数是17位精度,所以小数在python中实际是17位,这在用pandas时更能体现出来,假如有这样的一个csv文件:其中有很多小数,经由python的pandas读取,再写入:import pandas as pddf = pd.read_csv('D:\\csv\\Data.csv')df.to_csv('D:\\csv\\111.csv', index=F...原创 2020-01-07 18:05:34 · 8513 阅读 · 0 评论 -
python版生成pdf
之前写的用aspose.word转pdf,看评论应该有很多人也遇到相似的需求,这里推荐下python版的转pdf方法,感觉效果是非常好的了。推荐用pdfkit,效果好,使用也简单。在linux下需要安装 wkhtmltopdf.rpmwget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7...原创 2019-11-19 16:22:25 · 5556 阅读 · 0 评论 -
将pandas的DataFrame序列化写入redis
python写入redis的模块,好像只是支持字节写入,如果想将一个DataFrame写入的话,需要先将Dataframe进行序列化打包,目前所知有两种方法可以实现:方法一:利用DataFrame提供的方法 bytes_ = df.to_msgpack() 这个方法可以把 df 序列化打包,读取的时候同样用它提供的方法即可。 pd.read_msgpack(redis_key)...原创 2019-11-14 19:04:47 · 3842 阅读 · 0 评论 -
pandas提供的 to_numeric 方法使用中遇到的坑
业务逻辑是需要将一个csv读入,然后进行一些处理,比如对多个元素求和、求方差等等。要求忽略非数值型数据,而pandas的忽略数值型是整行整列的忽略,所以自然不能满足我的业务要求。于是,我这里的方案是先取出要计算的元素,然后进行数据清洗,再进行计算。这里就会存在一个问题,浮点数的问题。众所周知,浮点数在计算机中是没有办法完全精确表示的。所以会有保留精度。这在调用 pandas的内置方法 to...原创 2019-11-14 18:53:56 · 9783 阅读 · 0 评论 -
记 读取hdfs 转 pandas 再经由pandas转为csv的一个坑
工作流程是这样的:读取 hdfs 的 csv 文件,采用的是 hdfs 客户端提供的 read 方法,该方法返回一个生成器。 将读取到的数据按 逗号 处理,变为一个二维数组。 将二维数组传给 pandas,生成 df。 经若干处理后,将 df 转为 csv 文件并写入hdfs。问题是这样的: 正常的数据:ZERO,MEAN,STD,CV,INC,OPP,CS,IS_...原创 2019-11-06 17:31:48 · 1049 阅读 · 0 评论 -
python实现一个查询mysql表结构的创建语句
查询 mysql 数据库表结构语句有很多desc table_name;show fields from table_name;还有利用information_schema查询。。。。。查询 mysql 数据库表创建语句:show create table table_name查询结果如下:为了更清楚的看到结果我把内容拷到上面显示:在 navicat 里可以...原创 2019-11-05 14:43:40 · 1289 阅读 · 2 评论 -
python 正则学习笔记
简单的正则匹配,看文档就可以看懂,涉及到一些位置限定的,算是一些进阶内容,记录下学习成果。非捕获匹配: (?:...) 非捕获匹配后的结果是不能引用的。 顺序肯定环视匹配: (?=...) 顺序肯定环视匹配,匹配=后面的内容,例如 r'(?=a+)\w+', 匹配时若匹配到\w+数字字母下划线时,例如字符串@abcef,将会匹配到abcef, 从第一个字符a开...原创 2019-10-17 13:27:28 · 209 阅读 · 0 评论 -
python 中 is 和 == 区别
在python中 is 是用来比较两个对象是否为同一个对象,== 是用来比较两个对象内容是否相等。仔细想来这两个还是用的十分精准生动的。举个例子:一行一行说:定义两个变量a、b都等于1,判断 a == b,此时判断的是a的值是否和b的值相等,答案是肯定的,所以返回true。id函数可以打印出来对象在内存中的唯一标识,也就是内存地址。那么id(a) == id(b)...原创 2019-10-10 12:16:51 · 316 阅读 · 0 评论 -
dataframe进行算术运算
pandas的dataframe可以直接进行算术运算,包括一系列的加法减法、方差、标准差等等。但是计算时会面临两个问题:其一,如何忽略非数字数据,因为在非数字数据的影响下,pandas会直接忽略该行数据,不进行计算。虽然不抛异常,但是丢失了数据。 其二,pandas计算都是按行或列,如果我们求一个区域内的算术运算结果,需要再将行或列运算后的结果再运算,这对于一些简单的运算,譬如加减乘除类...原创 2019-10-08 13:19:44 · 3584 阅读 · 0 评论 -
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty 解决办法。(附 if 深层理解)
由于python语言的简洁性,在判断一个容器是否为空的时候,比如列表,可以直接用if + 要判断的东西:a = list()if a: print('不为空')else: print('列表为空')如果是空会返回false,在有值的时候会返回true。这是因为列表加在 if 后面构成判断语句时,python是能判断要做什么,针对空列表,以及列表本身为none都...原创 2019-09-29 17:34:04 · 55893 阅读 · 1 评论 -
根据特定规则生成一个指定长度的序列(例如Excel的列名ABCD)
有一个业务需求,要做一个模仿excel表格的列名,ABCD.....可以观察到Excel表格列名的规则是26个大写字母,如果到了 Z 则会进位,变为AA,由此可以发现这其实是一个26进制的问题。只要定义一个特定的序列,从该序列取值,根据索引位置取值即可。每次都取下一个,也就是 +1,计算+1之后的索引。对于多位字符,可以定义一个列表,模拟各个位,用占位符的形式来存值,即为26进制下的个位、...原创 2019-09-25 12:15:34 · 1338 阅读 · 0 评论 -
dataframe新增列、删除列、重命名列操作
刚好用到这几个操作,复习下,加以记录。有一个字典如下:data = { 'A': [0, 1, 2, 3], 'B': [1, 2, 3, 4], 'C': [2, 3, 4, 5], 'D': [3, 4, 5, 6]}转换为数据框:df = pd.DataFrame(data)print(df)删除列:若要删除某一列,提供列名即...原创 2019-09-24 00:09:12 · 6331 阅读 · 0 评论 -
py文件在pycharm编辑器运行正常,在命令行或双击报错找不到模块解决办法
先简单描述下问题,一个py文件会被视为一个模块,我在pycharm里写好程序,一个模块引用另一个模块,是可以正常运行的,如图。但是脱离pycharm直接双击或者在终端运行就会报找不到模块的错误。查阅了一些资料找到了解决办法。在cmd直接运行,报错如下。下面分析下原因。由于python执行的时候需要根据sys.path下能扫描到的包进行操作可以把它能扫描到的包路径打印出来,在...原创 2019-08-07 16:46:00 · 7216 阅读 · 3 评论 -
python获取方法名称
python在方法外获取方法名称可以调用__name__在内部获取当前方法名称:f_code和co_name可以参考python源码解析的pyc生成和命名空间章节。获取注释直接调用__doc__即可,注意在方法内,用上述方法得到方法名后,方法名为一个字符串,而__doc__返回的是调用它的对象的文档,所以此时我们获取到的实际是个字符串对象,不是我们想要的对象,为了让pyt...原创 2019-08-08 11:07:47 · 7499 阅读 · 0 评论 -
AttributeError: Can't pickle local object 解决办法
今天意外的发现了python装饰器和多进程之间的一个小坑,起初简单写了一个装饰器,用来给程序计时,自测了下没有什么问题def times_used(*dargs): def time_(f): def count_time(*args, **kw): start = datetime.datetime.now() pr...原创 2018-11-07 14:11:24 · 63204 阅读 · 1 评论 -
mysql查表结构语句
一直想整理,比较懒没有做,今天恰好不太忙,整理下。 最早在做数据词典的时候,都是按着数据库手敲,非常累而且低效,后来了解到有pdm可以用,用过一段时间,但是由于它需要一些配置,有时候做出来还是要二次加工,也是比较麻烦,相对于手敲要好很多。 现在python用的比较熟练,结合mysql查询数据库表结构语句,用起来非常舒服。 查询数据库表结构语句...原创 2019-01-21 11:29:17 · 10124 阅读 · 0 评论 -
python输出pdf文档
python导出pdf,参考诸多资料,发现pdfkit是效果比较好的。故下载后进行了实现,多次失败后终于成功了,现将其中经验总结如下:"""需要安装pdfkit,另外需要安装可执行文件wkhtmltopdf.exe,pdfkit核心命令是调用wkhtmltopdf.exe实现转pdf有三个接口:pdfkit.from_urlpdfkit.from_stringpdfkit.fr...原创 2019-02-07 19:45:29 · 6607 阅读 · 1 评论 -
python找出数据中的重复数据
在python中set(集合)是和数学意义上的集合一样,不允许元素重复,因此可以将list转为set去重,当然这样比较粗暴,不清楚哪些数据是重复的。如果要找出哪些元素是重复的,可以用pandas库的dataframe数据结构,用drop_duplicates方法进行去重。原理是这样:drop_duplicates方法可以完全清除重复元素,比如[1, 2, 2, 3],经过drop_duplic...原创 2019-02-28 14:20:51 · 23939 阅读 · 2 评论 -
dataframe接收参数list,不接收tuple
从数据库读取数据准备转为dataframe,却发现一直报错:DataFrame constructor not properly called!打开源码查看后发现,dataframe构造器接收的参数类型没有tuple类型,将参数转为list后解决。...原创 2019-03-01 10:24:28 · 739 阅读 · 0 评论 -
python正则匹配汉字
python正则匹配汉字的规则为:[\u4e00-\u9fa5]后面可以加一个+,匹配多个汉字。例子如下:print(re.findall(r'[\u4e00-\u9fa5]+', '这是测试用例'))原创 2019-03-08 17:29:14 · 14589 阅读 · 0 评论 -
python的模板引擎jinja2怎样不处理一些特殊字符
在用python的模板引擎jinja2时,发现一个问题,由于它是匹配{{}}双花括号的,所以一旦遇到花括号的时候他就会识别出来,但是某些情况下我们是不想让他识别的,这时候可以对不想让他识别的进行特殊处理:{{'这里是不让他处理的内容'}}。例如:在生成mybatis文件时,会有大量的#{id,jdbcType=integer},这样类似的表达式,这时候是不希望引擎去处理这个花括号的,所...原创 2019-03-07 17:54:49 · 2021 阅读 · 0 评论 -
用python实现的mybatis反向生成器
用python实现了一个mybatis反向生成器,比较简单。一种方法是用字符串直接拼接格式化的形式,比较low,贴段代码出来: def generate_java(self, data, end=False): column_type = eval('mt.MysqlType.{}.value[1]'.format(data[1])) self.re...原创 2019-03-12 10:48:59 · 1815 阅读 · 0 评论 -
python游戏外星人入侵
不得不叹服python的强大,用python代码可以轻松开发出一款小游戏,参考自python编程入门书籍。跟着书里的项目学了一遍,感觉受益颇多,还能做游戏自己玩。具体代码见:https://github.com/xiqiuyimeng/alien-invasion...原创 2019-03-12 10:58:46 · 195 阅读 · 0 评论 -
dataframe改变两列的顺序
可能获取到的顺序不是我们想要的,这时候可以很方便的用pandas的dataframe改变顺序。比如我现在的数据是这样的:我想把客户id这一列放在编码的前面:我可以取出要操作的这一列:id_ = df['客户id']然后在df中删除目标列,df = df.drop('客户id', axis=1)再重新在df中插入,选择位置即可。df.insert(0, '客户id', id_...原创 2019-03-30 08:25:11 · 5756 阅读 · 0 评论 -
pandas 的 dataframe修改数据类型
今天在合并两个数据库的时候发现一直报错,原因是要合并的列数据不一致,一个是int一个是object。所以做了简单的数据类型转换,不得不感叹pandas的强大:df['客户id'] = df['客户id'].apply(pd.to_numeric)要处理的数据直接调用pd.to_numeric即可。...原创 2019-03-30 08:49:57 · 5451 阅读 · 0 评论 -
python 发邮件
python有内置的模块支持发送邮件email,smtp。我这里是开启了163邮箱的smtp授权,所以可以这样第三方登录。发现一个问题,格式化发送人收件人地址的时候必须加<>,否则编码会报错。def format_address(s): name, addr = parseaddr(s) return formataddr((Header(name, 'u...原创 2019-04-11 10:16:11 · 134 阅读 · 0 评论 -
python导出当前所有类库,然后再读取安装所有类库方法
有时候需要重装系统之类的,如果手动安装一个个类库,势必要累死。可以用命令来执行,首先是导出,pip freeze > pack.txt,文件名称是自定义的。这样他会生成一个txt文件,网上看到可以直接用命令pip install去安装。但是我个人操作的时候出了点问题。于是自己写了一个简单的脚本来批量安装。# 批量安装类库with open('D:\\pack.txt', ...原创 2019-05-27 11:59:30 · 1529 阅读 · 0 评论 -
pycharm配置git
pycharm配置git,需要在版本控制里配置到git的位置,然后想正常打开pycharm的终端,需要配置终端git bash地址。如图原创 2019-06-03 11:57:55 · 319 阅读 · 0 评论 -
python中format函数用法
语法是str.format()基本语法是通过{}和:来代替以前的%1、例如输出保留两位的数字:print("{:.2f}".format(3.1456879)),且会四舍五入。2、大括号里可以填索引,以此来保证后续format中参数的顺序位置,例如:print("{2} {0} {1}".format("are","you","How"))输出为How are you,注意索引...原创 2018-10-26 10:55:31 · 29788 阅读 · 0 评论