Python基础——遇到问题汇总
本篇文章主要写在学习使用python3中遇到的一些问题。
————本人是python小白,如有错误的地方请各位大神指教。
1、print()函数
旧的print函数用法为print ‘Hello’,而新的print函数对此改成了print(‘Hello’)并且不再兼容之前版本。
如果在3.X版本上Python上使用旧的print语法,将出现“SyntaxError: invalid syntax”错误。
2、raw_input()与input()
Python3中用input()取代了raw_input(),当然这仅仅是重命名,使用上并没有不同;
3、比较符号,使用!=替换<>
4、repr函数
使用repr()函数替换“(注:反单引号,位于键盘1的左边一个键),将一个object转换为string,注意repr()与str()略有不同
5、exec()函数
exec用来执行存储在字符串或者文件中的Python语句,与JavaScript中的eval()函数类似,新的exec用法为exec(‘print(“Hello”)’)
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
6. Windows下,"No module named ‘xlrd’ "的解决办法
- 问题描述
windows10下,python代码中引用头文件
import xlrd
出现下面错误
"No module named 'xlrd'
-
原因
python的xlrd库是第三方的,需要另外自行安装。 -
解决方案
进入windows command 命令行,然后把目录切换到python的安装目录下的Script文件夹,运行 easy_inatall pip, 安装pip命令
利用pip命令,安装xlrd包
pip install xlrd
7. ImportError: No module named ‘urllib2’
今天试了一下一段简单的代码:
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
运行后报错:
Traceback (most recent call last):
File "D:/PycharmProjects/network_test/scrapy.py", line 1, in <module>
import urllib2
ImportError: No module named 'urllib2'
自己电脑里装的是python 3.4里面,在3以后用urllib.request代替urllib2,所以改成这样:
import urllib.request
response = urllib.request.urlopen("http://www.baidu.com")
print(response.read())
8. 解决python3 AttributeError: ‘module’ object has no attribute ‘urlencode’
报错:
Traceback (most recent call last):
File "C:/Users/Window/Desktop/urllib2_test01.py", line 13, in <module>
data = urllib.urlencode(values)
AttributeError: 'module' object has no attribute 'urlencode'
解决:
是python 3版本,要用urllib.parse.urlencode(values)
9. python3.x执行post请求时报错“POST data should be bytes or an iterable of bytes…”的解决方法
使用python3.5.1执行post请求时,一直报错"POST data should be bytes or an iterable of bytes. It cannot be of type str.",仔细对照教程后也未发现编写方法没有问题。
最后通过交流发现需要加在urlencode语句后加encode(encoding=‘UTF8’)
eg:
params = urllib.parse.urlencode({'userid':'381fccbd776c4deb'}).encode(encoding='UTF8')
问题解决
10. 将列表中的每个元素转成float(Python2与Python3的区别)
#Python2
for line in fr.readlines():
curLine = line.strip().split('\t')
fltLine = map(float, curLine) # 将每个元素转成float类型
dataMat.append(fltLine)
#Python3
for line in fr.readlines():
curLine = line.strip().split('\t')
fltLine = list(map(float,curLine))# 将每个元素转成float类型
dataMat.append(fltLine)
11. Python错误TypeError: write() argument must be str, not bytes
今天使用Python中的pickle存储的时候出现了以下错误:
TypeError: write() argument must be str, not bytes
网上搜索才发现原来是文件打开的方式有问题。
之前文件打开的语句是:
f=open("list.pkl","w+")
然后使用二进制方式打开就没有这个问题:
f=open("list_account.pkl","wb+")
产生问题的原因是因为pickle存储方式默认是二进制方式