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

最近要频繁的玩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中的编码问题,有时候也很麻烦。不过这类问题一般百度下就能找到对应的解决办法。

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_16633405/article/details/80225334