玩Python遇到的问题一二三及解决办法

文章目录

  • 问题一:python 2.7版本解决TypeError: 'encoding' is an invalid keyword argument for this function。
  • 问题二:python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence"
    • 情景一:
    • 情景二:
  • 问题三:python执行SQL报错:not enough arguments for format string
  • 问题四:输出的信息为转义码
  • 问题五:使用list的clear()方法时的注意点
  • 问题六:Python下调用json.dumps中文显示问题解决办法
  • 问题七:报错:pymysql.err.OperationalError: (1040, 'Too many connections')
  • 问题八:ValueError: invalid literal for int() with base 10: “”
  • 问题九:解决python中TypeError: not enough arguments for format string
  • 问题十:消除python中控制台输出的警告信息
    • 问题十一:报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

最近要频繁的玩Python,在这里总结下遇到的一些问题,持续更新中。

问题一:python 2.7版本解决TypeError: ‘encoding’ is an invalid keyword argument for this function。

用Python2.7来打开一些文件的时候,经常出现以上的所表示的问题,如

data_file = open("F:\\MyPro\\data.yaml", "r", encoding='utf-8')

运行的时候报错:TypeError: ‘encoding’ is an invalid keyword argument for this function。但在Py3中运行却不会遇到这样的问题
解决办法:网上查找一番后,改成如下这样就可以搞定

import io
data_file = io.open("F:\\MyPro\\data.yaml", "r", encoding='utf-8')

至于原因根据报错的信息看也许跟Py2和Py3的API规定不同有关吧。

问题二:python读取文件时提示"UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 205: illegal multibyte sequence"

情景一:

同样是读取文件时,碰到的编码问题。
解决办法:

FILE_OBJECT= open('order.log','r', encoding='UTF-8')

只需要加入对应的encoding参数就OK了,对于Python中的编码问题,有时候也很麻烦。不过这类问题一般百度下就能找到对应的解决办法。

情景二:

突然在用pandas读取别人的.csv数据的时候出现了一种奇怪现象:用Python2的解释器时可以读取,用python3的解释器却无法读取。报上面的错误,后来在方法中添加encoding参数依旧不可行,之后查阅资料才知道,原来是.csv文件本事的格式问题,首先确保你的.csv是utf8编码(用notepad打开.csv文件查看文件编码格式),其次要确保你的.csv在保存的时候也是.csv utf-8格式(可以再重新打开.csv文件再保存为.csv utf-8格式),如下图所示:
在这里插入图片描述

问题三:python执行SQL报错:not enough arguments for format string

在Python中执行SQL的查询语句的时候爆出这样的错误,如
sql='select * from Teacher where Tname like \'%%'+ keyword +'%%\''。后来才知道出现这类问题,主要是字符串中包含了%号,python 认为它是转移符,而实际我们需要的就是%, 这个时候,可以使用%%来表示%,也就是说sql字符串中的百分号全都要用%%来表示。

问题四:输出的信息为转义码

# ((u'01', u'\u5f20\u4e09'), (u'04', u'\u5f20\u4e09\u4e30')) # (u'01', u'\u5f20\u4e09')

这种情况也只有在Py2中才会出现,Py3中是不会出现的。
解决办法:将输出的转义码通过以下的eval方法转化为对应的中文。

 print(eval("u"+"\'"+exmple[1]+"\'"))

问题五:使用list的clear()方法时的注意点

最近在写一段如下代码时:

for line in lines:# print(line)for x in jieba.lcut(line):# print(x)if x not in stopwords:text1.append(x)text2=text1corpora_documents.append(text2)# print(corpora_documents)text1.clear()

这里由于类型转化问题不能采用简便的方法来直接分词并剔除停词,所以只能用这种方式来实现相同的功能,但是在实现的过程中,原本期望返回的corpora_documents是下图所示的效果:
这里写图片描述
但是却得到了一组空的List。这让博主很是郁闷(毕竟博主之前是写Java的,面相对象的思想“根深蒂固”,以为声明出来一个新的text2对象,就会开辟一块新的内存空间来存储text2的内容,这样text1和text2也就是值传递了而非引用传递,可是这是java的内存加载机制。。。),不过后来随着博主无意间将最后一行代码改为:

text1=[]

得到了自己想要的结果,之后再分析原因的时候,发现博主没有切换到Python的内存管理机制。其实整个过程对于Python来说内存管理如下:

for line in lines:# print(line)for x in jieba.lcut(line):# print(x)if x not in stopwords:text1.append(x)text2=text1#相当于将声明的两个对象的指针指向同一块内存空间即text1所在的内存空间corpora_documents.append(text2)#Python采用的应该是延迟加载,也就是说这里corpora_documents只是将指针指向了text2的内存地址,并没有直接就将text2里面的内容加载进来。# print(corpora_documents)text1.clear()#clear()就相当于擦除了text1中的内容,即text2指向了一个空的内容,由于Python延迟加载的特性也就造成了后面打印出来的corpora_documents的内容为空print(corpora_documents)

所以在使用clear()的时候一定要注意对象之间的关系,一不留神就会造成很大的损失。感觉这个问题好像在那本书中有提到,还得复习下基础知识,很多问题只有不断的Coding才能碰到,还是实践太少,仍需继续努力。

问题六:Python下调用json.dumps中文显示问题解决办法

最近在开发某个功能的时候,需要将前台的信息返回到后天处理后,以json字符串的形式返回,但是返回的内容显示在网页中确实ASCII码值,下面是这个问题的解决办法:
配置下dumps方法中的ensure_ascii这个属性!

data={"url":"http:www.dianwe.com","content":"采集Test","CreateTime":"2014-07-08 23:29"}  
bizResult= json.dumps(data, ensure_ascii=False)   
print(bizResult)  

这样便不会转为Ascii 编号了!

问题七:报错:pymysql.err.OperationalError: (1040, ‘Too many connections’)

mysql数据库 Too many connections
出现这种错误明显就是 mysql_connect 之后忘记 mysql_close;我的情况是实现了自动更新本地数据库在测试的时候每次更新后又忘记关闭对应的connect,当大量的connect之后,就会出现Too many connections的错误,mysql默认的连接为100个。只需在代码中添加对应的connect.close()方法即可。

问题八:ValueError: invalid literal for int() with base 10: “”

最近在写代码的时候,突然爆出这样错误,根据字面意思是类型转化的问题,但是仔细检查了代码,发现类型转化没有问题。无奈只能去求助度娘,很多博客也说是类型转换的问题。以下是某博客的一个实验:

>>> int('')
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''
>>>>>> int("x")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'x'

从中可以看出这类错误就是字符无法转换为int型。但是仍找不到对应的错误的位置在哪里,刚好看看到一个建议:“为了避免类似错误,以后进行int类型转换时,注意检查,或者直接加try 捕获下”

 # try:#     print(int(re.sub("\D", "", x)))# except ValueError:#     print("-"*40)#     print("异常值"+x)

一查竟让多出了一些nan值:
在这里插入图片描述
但是后来去和数据做比对的时候,实在是也没有发现有什么nan值,这就很奇怪了,所以为了能让程序跑下去,这里就先省去了这个int的强制变换。

问题九:解决python中TypeError: not enough arguments for format string

出现这类问题,主要是字符串中包含了%号,python 认为它是转移符,而实际我们需要的就是%, 这个时候,可以使用%%来表示

问题十:消除python中控制台输出的警告信息

程序运行中经常会碰到python控制台显示警告提示SettingWithCopyWarning的信息,一般来说没什么大事,但是当这些信息多了之后就会干扰你查看一些关键信息的效率,那么如何让控制台不提示这类告警呢?很简单只需在代码中添加以下两行代码即可:

import warnings
warnings.filterwarnings("ignore")

问题十一:报错:UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 0: ordinal not in range(128)

使用python2.x的时候,即使在代码头部声明了encoding=“utf-8”,但是程序执行的时候仍会报这个错误,这时候只需要在头部添加如下代码即可

import sys
reload(sys)
sys.setdefaultencoding('utf8')

ps:python3.x一般就不会出现这种情况!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《MATLAB图像处理超级学习手册》导读

前言 MATLAB图像处理超级学习手册图像是人类获取信息的重要来源。当今的信息化社会&#xff0c;对图像处理和图像分析的要求越来越高&#xff0c;现有的图像软件由于采购成本和功能的限制&#xff0c;已经不能完全满足专业人士的需要&#xff0c;这时就需要专业人士来编写自己的…

【python】SOCK_STREAM和SOCK_DGRAM两种类型的区别【转】

sock_stream 是有保障的(即能保证数据正确传送到对方)面向连接的SOCKET&#xff0c;多用于资料(如文件)传送。 sock_dgram 是无保障的面向消息的socket &#xff0c; 主要用于在网络上发广播信息。 SOCK_STREAM是基于TCP的&#xff0c;数据传输比较有保障。SOCK_DGRAM是基于U…

JavaScript将字符串中的每一个单词的第一个字母变为大写其余均为小写

要求&#xff1a; 确保字符串的每个单词首字母都大写&#xff0c;其余部分小写。 这里我自己写了两种方法&#xff0c;或者说是一种方法&#xff0c;另一个是该方法的变种。 第一种&#xff1a; function titleCase(str) {var newarr,newarr1[]; newarr str . toLowerCase() .…

聊天机器人的分类及综述

文章目录[toc] 目录前言&#xff1a;1、技术方向2、chatbot的知识框架3、应用的分类4、chatbot的几个challenges5、工业应用综述总结&#xff1a;目录 前言&#xff1a; 最近由于工作需要&#xff0c;要开发一款智能客服&#xff0c;目前正在搞业务咨询模块的功能&#xff0c…

【python】数据结构和算法 + 浅谈单链表与双链表的区别

有这么一句话说“程序数据结构算法”&#xff0c;也有人说“如果把编程比作做菜&#xff0c;那么数据结构就好比食材&#xff08;菜&#xff09;&#xff0c;算法就好比厨艺&#xff08;做菜的技巧&#xff09;”。 当然这是笼统的说法&#xff0c;不过也稍微懂得了数据结构和…

Ironic 安装和配置详解

转自&#xff1a;http://amar266.blogspot.com/2014/12/ironic-installation-and-configuration.html 1.Install Openstack With Neutron 2.Create and delete vm to test the setup 3.Configure existing setup for ironic 3.1.Configure ironic user in keystone # keystone …

webpack使用优化(基本篇)

转自&#xff1a;https://github.com/lcxfs1991/blog/issues/2 前言 本文不是webpack入门文章&#xff0c;如果对webpack还不了解&#xff0c;请前往题叶的Webpack入门&#xff0c;或者阮老师的Webpack-Demos。 为什么要使用Webpack 与react一类模块化开发的框架搭配着用比较好…

word2vec中单词向词向量的转换过程详解

目录前言&#xff1a;1、Word2Vec两种模型的大致印象2、CBOW模型流程举例3、CBOW模型流程举例总结&#xff1a; 目录 前言&#xff1a; 针对word2vec是如何得到词向量的&#xff1f;这篇文章肯定能解决你的疑惑。该篇文章主要参考知乎某大神的回答&#xff0c;个人在此基础上…

Python把函数作为参数传入的高阶编程方法

map:接受两个参数&#xff08;函数&#xff0c;Iterable&#xff09;&#xff0c;map将传入的函数依次作用于Iterable的每个元素&#xff0c;并且返回新的Iterable def f(x):return x*x r map(f,[1,2,3,4]) #此时的r为惰性求值——可用next()和for...in取值 #通过list()返…

《编程珠玑(第2版•修订版)》—第2章2.2节无处不在的二分搜索

本节书摘来自异步社区《编程珠玑&#xff08;第2版•修订版&#xff09;》一书中的第2章2.2节无处不在的二分搜索&#xff0c;作者【美】Jon Bentley&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.2 无处不在的二分搜索我想到的一个数在1到100之间&…

JavaScript学习笔记(四)——jQuery插件开发与发布

jQuery插件就是以jQuery库为基础衍生出来的库&#xff0c;jQuery插件的好处是封装功能&#xff0c;提高了代码的复用性&#xff0c;加快了开发速度&#xff0c;现在网络上开源的jQuery插件非常多&#xff0c;随着版本的不停迭代越来越稳定好用&#xff0c;在jQuery官网有许多插…

AIML元素详细说明

目录前言&#xff1a;1、简介2、详细说明总结&#xff1a; 目录 前言&#xff1a; 智能客服客户咨询功能的实现主要依靠的就是Python的AIML库&#xff0c;这里就先介绍下AIML。 详细的使用教程可参考&#xff1a;https://github.com/andelf/PyAIML 目前大部分AIML只支持Py…

【解决】如何打开.ipynb文件

最近碰到文件名后缀为.ipynb文件&#xff0c;起初没太在意这种文件格式&#xff0c;用Notepad打开之后看到也是类似于JSON格式的信息&#xff0c;以为也是为其他的一些文件服务的&#xff08;类似于配置一些HTML文件的配置文件&#xff09;。但是后来才发现这也是一种文本表示形…

《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡

本节书摘来异步社区《树莓派学习指南&#xff08;基于Linux&#xff09;》一书中的第1章&#xff0c;第1.4节&#xff0c;作者&#xff1a;【英】Peter Membrey ,【澳】David Hows &#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.4 将Raspbian烧录到SD卡 …

python单向链表和双向链表的图示代码说明

图示说明&#xff1a; 单向链表&#xff1a; insert、 remove、 update、pop方法 class Node:def __init__(self, data):self.data dataself.next Nonedef __str__(self):return str(self.data)# 通过单链表构建一个list的结构&#xff1a; 添加 删除 插入 查找 获取长…

不使用Ajax,如何实现表单提交不刷新页面

不使用Ajax&#xff0c;如何实现表单提交不刷新页面&#xff1f; 目前&#xff0c;我想到的是使用<iframe>&#xff0c;如果有其他的方式&#xff0c;后续再补。举个栗子&#xff1a; 在表单上传文件的时候必须设置enctype"multipart/form-data"表示表单既有文…

AIML知识库数据匹配原理解析

目录&#xff1a;前言&#xff1a;1、AIML系统工作流程2、AIML的核心推理机制3、推理举例4、匹配规则及实践中遇到的一些问题的解释总结&#xff1a; 目录&#xff1a; 前言&#xff1a; 参考&#xff1a;《Alice机理分析与应用研究》 关于AIML库这里就不介绍了&#xff0c…

【Python】模拟面试技术面试题答

一、 python语法 1. 请说一下你对迭代器和生成器的区别&#xff1f; 2. 什么是线程安全&#xff1f; 3. 你所遵循的代码规范是什么&#xff1f;请举例说明其要求&#xff1f; 4. Python中怎么简单的实现列表去重&#xff1f; 5. python 中 yield 的用法…

ROS机器人程序设计(原书第2版)2.3 理解ROS开源社区级

2.3 理解ROS开源社区级 ROS开源社区级的概念主要是ROS资源&#xff0c;其能够通过独立的网络社区分享软件和知识。这些资源包括&#xff1a; 发行版&#xff08;Distribution&#xff09; ROS发行版是可以独立安装、带有版本号的一系列综合功能包。ROS发行版像Linux发行版一样…

Win7 U盘安装Ubuntu16.04 双系统

Win7系统下安装Ubuntu系统&#xff0c;主要分为三步&#xff1a; 第1步&#xff1a;制作U盘启动盘 第2步&#xff1a;安装Ubuntu系统 第3步&#xff1a;创建启动系统引导 第1步&#xff1a;制作U盘启动盘 1.下载Ubuntu16.04安装镜像&#xff0c;官网地址&#xff1a;http://www…